array_walk发出警告;声称无效可赎回

时间:2014-05-29 00:34:37

标签: php lambda anonymous-function

使用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。

1 个答案:

答案 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);