【发布时间】:2021-11-15 13:29:48
【问题描述】:
我正在尝试将多维数组扁平化为给定的特定格式。 我有一棵树,它保存为嵌套数组,这没问题,但在 UI 中呈现数组的函数只需要一个数组,并且每个孩子都有一个独立的数组。每个选项都应该在同一级别,而不是嵌套数组。
这就是我的数组的 var_dump:
(
[id] => 1
[name] => some data.
[emoji] => ????
[parent_id] =>
[children] => Array
(
[0] => Array
(
[id] => 2
[name] => Food
[emoji] => ????
[parent_id] => 1
[children] => Array
(
)
)
[1] => Array
(
[id] => 3
[name] => some other data
[emoji] => ????
[parent_id] => 1
[children] => Array
(
[0] => Array
(
[id] => 4
[name] => Massages
[emoji] => ????
[parent_id] => 3
[children] => Array
(
)
)
[1] => Array
(
[id] => 5
[name] => Games
[emoji] => ????
[parent_id] => 3
[children] => Array
(
)
)
)
)
)
)
)
而预期的结果应该是:
0] => Array
(
[id] => 1
[name] => Rusty Corp.
[emoji] => ????
[parent_id] =>
)
[1] => Array
(
[id] => 2
[name] => Food
[emoji] => ????
[parent_id] => 1
)
[2] => Array
(
[id] => 3
[name] => Canine Therapy
[emoji] => ????
[parent_id] => 1
)
[3] => Array
(
[id] => 4
[name] => Massages
[emoji] => ????
[parent_id] => 3
)
[4] => Array
(
[id] => 5
[name] => Games
[emoji] => ????
[parent_id] => 3
)
我尝试了不同的方法,例如 array_merge 或自定义展平函数,但无法达到预期的结果,有什么建议吗?
编辑:
这是我的扁平化功能:
private function flatten_array( array $array ) {
$return = array();
array_walk_recursive(
$array,
function( $a ) use ( &$return ) {
$return[] = $a;
}
);
return $return;
}
【问题讨论】:
-
你能发布你的代码吗,到目前为止你尝试了什么?