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