【发布时间】:2017-06-11 10:20:38
【问题描述】:
我有一个这样的数组:
array (size=4)
0 =>
array (size=4)
key => value
key => value
key => value
key => value
1 =>
array (size=2)
key => value
key => value
2 =>
array (size=1)
key => value
3 =>
array (size=1)
key => value
我想把数组展平成这样:
array (size=4)
key => value
key => value
key => value
key => value
key => value
key => value
key => value
key => value
我已经尝试过使用array_merge、array_walk_recursive 和RecursiveIteratorIterator 和RecursiveArrayIterator 之类的解决方案。我还尝试了许多在 StackOverflow 上发布的类似问题的解决方案,但它们都没有按我预期的方式工作。他们要么不保留键值对,要么给我一个与原始数组相同的数组。我的尝试看起来像这样:
$multidimensionalArray = array(stuff goes here);
$flatArray = array();
function flattenArray ($array) {
foreach ($array as $key => $value) {
if (is_array($value) {
flattenArray($value);
}
else {
$flatArray[$key] = $value;
}
}
}
flattenArray($multidimensionalArray);
【问题讨论】:
-
您可能无法访问函数内部的全局变量
$flatArray。将其声明为全局内部或通过引用函数将其传递 -
你说得对,我没有访问函数中的变量。当我检查循环中 $flatArray 的内容时,我发现它正确地展平了每个子数组,但它们没有连接在一起。我已经尝试使用 array_merge 来纠正这个问题,但是在循环完成后,我只得到了最终的键值对。
标签: php arrays recursion multidimensional-array flatten