1
所以我试图创建一个递归flattenArray函数,将采取一个数组(与未知数量的元素和子数组(可能更多的子数组)麻烦:array_push:我的递归平坦数组函数似乎重置最终数组?
<?php
// Javascript Array [ [1,2,3],[[[4]]],[5],[6],[[7,8,[9]]] ]
// Equivalent PHP Array:
$sampleArray = Array(
Array(1,2,3),
Array(
Array(
Array(4)
)
),
Array(5),
Array(6),
Array(
Array(
7,
8,
Array(9)
)
)
);
$finishedArray = Array();
function flattenArray($array){
foreach ($array as $key => $value) {
if(is_array($value)){
flattenArray($value);
} else {
$finishedArray[] = $value;
echo "<br> ".$value." | ";
print_r($finishedArray);
}
}
}
flattenArray($sampleArray);
echo "<br><br>FinishedArray: <br>";
print_r($finishedArray);
?>
我得到这个输出。
1 | Array ([0] => 1)
2 | Array ([0] => 1 [1] => 2)
3 | Array ([0] => 1 [1] => 2 [2] => 3)
4 | Array ([0] => 4)
5 | Array ([0] => 5)
6 | Array ([0] => 6)
7 | Array ([0] => 7)
8 | Array ([0] => 7 [1] => 8)
9 | Array ([0] => 9)
FinishedArray:
Array ()
出于某种原因,重置$ finishedArray 我在做什么错在这里
?
谢谢!我看到你的回复后甚至找到了一个更简单的修复方法: 我把“global $ finishedArray;”在“函数flattenArray($ array){”和foreach语句之间。像魅力一样工作! – Boro