我有一個嵌套數組,我想遞歸地展平。我的功能適用於某些情況,而其他情況則失敗。我不明白什麼是錯的。如何在PHP中遞歸地平鋪樹數組?
嵌套數組例如:
Array
(
[0] => Array
(
[id] => 6
[login] => Breanne
[level] => Subdealer
[type] => admin
[supervisor_id] => 7
[name] => Dominique Berge
[active] => 0
[pending] => 0
[waiting] => 0
[child] => Array
(
[0] => Array
(
[id] => 10
[login] => Priscilla
[level] => Subdealer
[type] => employee
[supervisor_id] => 6
[name] => Naomie Hudson
[active] => 0
[pending] => 0
[waiting] => 0
)
)
)
[1] => Array
(
[id] => 15
[login] => Myrtis
[level] => Dealer
[type] => manager
[supervisor_id] => 7
[name] => Dr. Neha Harris
[active] => 0
[pending] => 0
[waiting] => 0
)
[2] => Array
(
[id] => 18
[login] => Leon
[level] => Dealer
[type] => employee
[supervisor_id] => 7
[name] => Felipa Pacocha
[active] => 0
[pending] => 0
[waiting] => 0
)
)
平例如:
Array
(
[0] => Array
(
[id] => 10
[login] => Priscilla
[level] => Subdealer
[type] => employee
[supervisor_id] => 6
[name] => Naomie Hudson
[active] => 0
[pending] => 0
[waiting] => 0
)
[1] => Array
(
[id] => 6
[login] => Breanne
[level] => Subdealer
[type] => admin
[supervisor_id] => 7
[name] => Dominique Berge
[active] => 0
[pending] => 0
[waiting] => 0
)
[2] => Array
(
[id] => 15
[login] => Myrtis
[level] => Dealer
[type] => manager
[supervisor_id] => 7
[name] => Dr. Neha Harris
[active] => 0
[pending] => 0
[waiting] => 0
)
[3] => Array
(
[id] => 18
[login] => Leon
[level] => Dealer
[type] => employee
[supervisor_id] => 7
[name] => Felipa Pacocha
[active] => 0
[pending] => 0
[waiting] => 0
)
)
我的功能:
function flatten($element)
{
$flatArray = array();
if (count($element) == 1 && !array_key_exists('child', $element) && !is_array($element)) {
$flatArray[] = $element;
}
foreach ($element as $key => $node) {
if (array_key_exists('child', $node)) {
$flatArray = flatten($node['child']);
unset($node['child']);
$flatArray[] = $node;
} else {
$flatArray[] = $node;
}
}
return $flatArray;
}
其失敗的情況下是太長,我把它放在一個文件鏈接是https://drive.google.com/file/d/0B5A_yGNzXeg5UG11YWJDXzlMQVk/view?usp=sharing
你有共同的錯誤文檔。 –
對不起。我已糾正它。 –