Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组\u walk\u递归:两种方法,不同的结果_Php_Arrays_Recursion_Global - Fatal编程技术网

PHP数组\u walk\u递归:两种方法,不同的结果

PHP数组\u walk\u递归:两种方法,不同的结果,php,arrays,recursion,global,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, fu

给定以下设置:

    $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
能够提供读/写访问。

在尝试使用键获得一个扁平阵列后,这可以:

$result = array();

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

$inputarray = $result;

我希望有人能找到这一点,它会有所帮助。

我尝试了第一种方法,它看起来像预期的那样工作,它会打印3个foo。这两个函数都会写入
foo
三次,您是在本地开发的吗?如果是这样,请尝试重新启动Apache。如果是在外部,请再次尝试上载文件,这可能是暂时的失败。是语句“$storer=array();”吗真正在全局范围内,即不在函数内。尝试打印(数组密钥存在('storer',$GLOBALS))-这应该返回true。如果不尝试print_r(debug_backtrace(debug_backtrace_IGNORE_ARGS))-这将为您提供调用堆栈,您可以从中确定范围。啊哈,我想我可能已经从注释中推断出发生了什么<代码>$storer不是真正的全局性;它在外部范围内。所有这些都在一个类方法中。。。