无法在闭包中编辑数组值

时间:2014-04-29 12:18:31

标签: php closures

嘿,我不太确定这是一个错误还是一个功能改变:

$a = array(array(0));

array_walk(
    $a,
    function (&$e) {
        array_filter(array(), function() use ($e) {});
        $e[] = 1;
    }
);

print_r($a[0]);
PHP 5.5.3-1ubuntu2.3中的

返回

Array
(
    [0] => 0
    [1] => 1
)

并在PHP 5.3.3-7 + squeeze19

Array
(
    [0] => 0
)

1 个答案:

答案 0 :(得分:0)

这个问题在闭包中重复使用相同的变量,有时通过引用,有时通过值,在PHP版本中的已知bug高达5.3.5。 PHP 5.3.6试图修复此问题,但在此过程中引入了新的bug。这个问题最终在PHP 5.3.7中解决了