如何重新格式化一个嵌套的阵列?

问题描述 投票:0回答:1
我有一个存储的

unlimited nested级别阵列和不需要的额外数据。 $arr = array( array( 'name' => 'item1', 'level' => 0, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-item1', 'level' => 1, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-sub-item1', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), array( 'name' => 'sub-sub2-item1', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), ) ), array( 'name' => 'item2', 'level' => 0, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-item2', 'level' => 2, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-sub-item2', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), array( 'name' => 'sub-sub2-item2', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), ) ), array( 'name' => 'item3', 'level' => 0, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-item3', 'level' => 1, 'extra_key' => 'some_data', 'children' => array( 'name' => 'sub-sub-item3', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), array( 'name' => 'sub-sub2-item3', 'level' => 2, 'extra_key' => 'some_data', 'children' => array() ), ) ), );

指望输出阵列:
$arr = array(
    array(
        'name' => 'item1',
        'nodes' => array(
            'name' => 'sub-item1',
            'nodes' => array(
                'name' => 'sub-sub-item1',
                'nodes' => array()
            ),
            array(
                'name' => 'sub-sub2-item1',
                'nodes' => array()
            ),
        )
    ),
    array(
        'name' => 'item2',
        'nodes' => array(
            'name' => 'sub-item2',
            'nodes' => array(
                'name' => 'sub-sub-item2',
                'nodes' => array()
            ),
            array(
                'name' => 'sub-sub2-item2',
                'nodes' => array()
            ),
        )
    ),
    array(
        'name' => 'item3',
        'nodes' => array(
            'name' => 'sub-item3',
            'nodes' => array(
                'name' => 'sub-sub-item3',
                'nodes' => array()
            ),
            array(
                'name' => 'sub-sub2-item3',
                'nodes' => array()
            ),
        )
    )
);

我想从各个级别上删除不需要的键,例如,我也想将键的名称更改为

level
,然后用新的same structions
复制相同的数组。格式

我怎么能实现?

我试图通过递归功能进行操作,但我未能再现相同的结构
    
您的结构没有意义,这可能是因为您无法编写递归功能。如果可以更改结构,我建议这样做(通过重新函数实施):
extra_key

此功能将递归地做您想做的事情。 如果需要,您可以添加额外的排除和/或重命名索引;

children

php arrays recursion multidimensional-array
1个回答
1
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.