为了账号安全,请及时绑定邮箱和手机立即绑定

扁平化多级对象数组的函数

扁平化多级对象数组的函数

PHP
慕标琳琳 2022-10-28 14:52:30
我有一个 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    ]]任何人都知道如何解决我的问题?
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

我只需要添加&到函数中:

reduceArrayOfObjects(array $array, array &$flatArray, $children = 'children) {}


查看完整回答
反对 回复 2022-10-28
  • 1 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信