使用PHP版本5.4.27,以下代码抛出警告并失败。
$test = ['a', 'b', 'c'];
array_walk($test, function (&$value, $key) { $value = 1; });
var_dump($test);
结果:
警告:array_walk()期望参数2是有效的回调,第3行的[snip] /test.php中没有给出数组或字符串
array(3){[0] =>字符串(1)" a" [1] => string(1)" b" [2] =>字符串(1)" c" }
有关为何发生这种情况的任何想法?
已解决:这实际上是由于eAccelerator无法正常使用匿名函数。切换到Zend Performance Suite或APC。
答案 0 :(得分:2)
您确定自己运行的是PHP 5.3或更高版本吗?匿名函数只引入了5.3并且您的错误消息提示是这种情况?这是一个应该在5.2及更早版本上运行的代码片段
echo phpversion();
$test = ['a', 'b', 'c'];
function setOne (&$value, $key) {
$value = 1;
}
array_walk($test, "setOne");
var_dump($test);