PHP array_walk_recursive:两种方法,结果不同

时间:2014-08-13 22:42:25

标签: php arrays recursion global

给出以下设置:

    $storer = array();
    $arr = array(1, 2, 3);

我很好奇为什么不写$storer ...

array_walk_recursive($arr, function($val, $key) {
    global $storer;
    $storer[] = 'foo';
});
print_r($storer); //no change - empty

..但这样做:

array_walk_recursive($arr, function($val, $key) use (&$storer) {
    $storer[] = 'foo';
});
print_r($storer); //three items, all 'foo'

任何人都可以开导我吗?在用户函数中,我希望global提供读/写访问权。

1 个答案:

答案 0 :(得分:2)

拔出头发试图获得一个扁平的数组之后,这可行:

$result = array();

array_walk_recursive($inputarray,function($v, $k) use (&$result){ $result[$k] = $v;  });

$inputarray = $result;

我希望有人能找到这个并且有所帮助。