允许我的函数访问外部变量
我在外面有一个数组:
$myArr = array();
我想让我的函数访问它外面的数组,这样它就可以向它添加值
function someFuntion(){
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
}
如何为变量指定函数正确的作用域?
我在外面有一个数组:
$myArr = array();
我想让我的函数访问它外面的数组,这样它就可以向它添加值
function someFuntion(){
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
}
如何为变量指定函数正确的作用域?
默认情况下,当您在函数内部时,您无权访问外部变量。
如果希望函数能够访问外部变量,则必须在函数内将其声明为 :global
function someFuntion(){
global $myArr;
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
}
有关详细信息,请参阅变量作用域。
但请注意,使用全局变量不是一个好的做法:这样,你的函数就不再是独立的了。
一个更好的主意是让你的函数返回结果:
function someFuntion(){
$myArr = array(); // At first, you have an empty array
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal; // Put that $myVal into the array
return $myArr;
}
并像这样调用函数:
$result = someFunction();
你的函数也可以接受参数,甚至可以处理通过引用传递的参数:
function someFuntion(array & $myArr){
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal; // Put that $myVal into the array
}
然后,像这样调用函数:
$myArr = array( ... );
someFunction($myArr); // The function will receive $myArr, and modify it
有了这个:
有关这方面的更多信息,您应该阅读PHP手册的函数部分,特别是以下小节:
$foo = 42;
$bar = function($x = 0) use ($foo){
return $x + $foo;
};
var_dump($bar(10)); // int(52)
更新:现在支持箭头函数,但我会让更多使用它的人创建答案