我有一个 stdObjects 数组,它们是多级的。我需要把它们弄平。
这是对象数组:
[
(int) 0 => object(stdClass) {
link => ''
icon => ''
title => 'Main'
id => (int) 2
children => [
(int) 0 => object(stdClass) {
link => 'YTo0OntzOjEwOiJjb250cm9sbGVyIjtzOjU6InBhZ2VzIjtzOjY6ImFjdGlvbiI7czo3OiJkaXNwbGF5IjtzOjU6InBhc3MwIjtzOjQ6ImhvbWUiO3M6NToicGFzczEiO3M6MDoiIjt9'
icon => 'fa-tachometer-alt'
title => 'Dashboard'
id => (int) 3
}
]
}
]
现在我创建了以下函数来将多级(可以达到 4 级深)减少到单级并将对象转换为经典数组:
function reduceArrayOfObjects(array $array, array $flatArray, $children = 'children') {
foreach($array as $lvl1) {
$lvl1 = (array) $lvl1;
if(isset($lvl1[$children])) {
reduceArrayOfObjects($lvl1[$children], $flatArray, $children);
unset($lvl1[$children]);
}
$flatArray[] = $lvl1;
}
return $flatArray;
}
$multiLevel = []; // this is the array of objects
$newArray = [];
reduceArrayOfObjects($multiLevel, $newArray);
它不能正常工作,我只能将第一级放回我的新阵列中。我尝试了很多关于如何获得结果的变化,但所有这些都失败了。当我对所有foreach()循环进行硬编码时,它可以工作......
这是我当前的输出:
[
(int) 0 => [
'link' => '',
'icon' => '',
'title' => 'Main',
'id' => (int) 2
]
]
任何人都知道如何解决我的问题?
MMTTMM