如何在php中递归展平树数组?
我有一个嵌套数组,我想递归展平它。我的函数在某些情况下有效,但在某些情况下失败。我不明白这是怎么回事 嵌套数组示例:如何在php中递归展平树数组?,php,arrays,recursion,Php,Arrays,Recursion,我有一个嵌套数组,我想递归展平它。我的函数在某些情况下有效,但在某些情况下失败。我不明白这是怎么回事 嵌套数组示例: Array ( [0] => Array ( [id] => 6 [login] => Breanne [level] => Subdealer [type] => admin [supervisor_id]
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;
}
失败的案例太长,我将其放在一个文件中,该文件的链接是合并内部展平输出
function flatten($element)
{
$flatArray = array();
foreach ($element as $key => $node) {
if (array_key_exists('child', $node)) {
$flatArray = array_merge($flatArray, flatten($node['child']));
unset($node['child']);
$flatArray[] = $node;
} else {
$flatArray[] = $node;
}
}
return $flatArray;
}
您共享了错误的文档。对此表示抱歉。我已经改正了。
function flatten_array($items, array $flattened = []) {
foreach ($items as $key => $value) {
if (is_array($value)) {
$flattened = flatten_array($value, $flattened);
continue;
}
$flattened[$key] = $value;
}
return $flattened;
}