2012-05-24 23 views
0

我想知道是否可以更改和初始化函数中的变量而不传递参数给函数。下面是我想达到的目标:更改和初始化函数中的变量

$foo = 'Lorem'; 
$array = array(); 
foobar($foo); 
function foobar(){ 
    if (strlen($foo)== 1) 
     $bar = 'Ipsum'; 
    else 
     $array[] = 'error'; 
} 

fubar(); 
function fubar(){ 
    if (empty($fouten)) 
     echo $bar; 
} 

回答

1

$foo是一个函数内的本地(初始化)变量。它与全球变量$foo$GLOBALS['foo'])不同。

有两种方式:

$foo; 
$bar; 
$array = array(); 

function foobar(){ 
    global $foo, $array, $bar; 
    if (strlen($foo)== 1) 
     $bar = 'Ipsum'; 
    else 
     $array[] = 'error'; 
} 

或使用$GLOBAL阵列...

这是不是真的很好的做法,但并会成为维护的噩梦与所有这些副作用

1

功能在PHP中可以给出具有默认值的参数。您以书面形式发布的代码会为您提供未定义变量的通知。取而代之的是,你可以写:

function foobar($foo = null) { 
    if($foo) { // a value was passed in for $foo 
    } 
    else { // foo is null, no value provided 
    } 
} 

使用此功能时,无论是低于线会产生一个通知

foobar(); 
foobar('test'); 
+1

应检查'如果(is_null($富))'为空字符串强制转换成'FALSE'。取决于当然的要求,但值得注意。 – Dan