循环遍历多维数组并取消设置匹配项

汤姆

我有一个多维数组,我想遍历每个级别的每个项目,并删除“children”和“attribute_id”都为空的所有项目(在这种情况下,最后 2 个项目的键为 56 和 70)。

Array
(
    [11] => Array
        (
            [page_id] => 11
            [page_parent_id] => 0
            [attribute_id] => 8
            [children] => Array
                (
                )

        )

    [12] => Array
        (
            [page_id] => 12
            [page_parent_id] => 0
            [attribute_id] => 
            [children] => Array
                (
                    [49] => Array
                        (
                            [page_id] => 49
                            [page_parent_id] => 12
                            [attribute_id] => 
                            [children] => Array
                                (
                                    [50] => Array
                                        (
                                            [page_id] => 50
                                            [page_parent_id] => 49
                                            [attribute_id] => 32
                                            [children] => Array
                                                (
                                                )

                                        )

                                )

                        )

                )

        )

    [13] => Array
        (
            [page_id] => 13
            [page_parent_id] => 0
            [attribute_id] => 9
            [children] => Array
                (
                )

        )

    [46] => Array
        (
            [page_id] => 46
            [page_parent_id] => 0
            [attribute_id] => 
            [children] => Array
                (
                    [52] => Array
                        (
                            [page_id] => 52
                            [page_parent_id] => 46
                            [attribute_id] => 34
                            [children] => Array
                                (
                                )

                        )

                    [53] => Array
                        (
                            [page_id] => 53
                            [page_parent_id] => 46
                            [attribute_id] => 
                            [children] => Array
                                (
                                    [54] => Array
                                        (
                                            [page_id] => 54
                                            [page_parent_id] => 53
                                            [attribute_id] => 35
                                            [children] => Array
                                                (
                                                )

                                        )
                                    [70] => Array
                                        (
                                            [page_id] => 70
                                            [page_parent_id] => 53
                                            [attribute_id] => 
                                            [children] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [56] => Array
                        (
                            [page_id] => 56
                            [page_parent_id] => 46
                            [attribute_id] => 
                            [children] => Array
                                (
                                )

                        )

                )

        )

)

到目前为止,我已经有了这个,我可以回显我想要取消设置的项目,但我不确定如何获得它,所以我实际上可以取消它。

function loop($a) {
    if(empty($a['children']))
    {
        if(empty($a['attribute_id']))
        {
            var_dump($a);
        }
    } else {
        foreach($a['children'] as $v) {
            loop($v);
        }
    }
}

foreach($pages as $p)
{
    loop($p);
}

像这样的东西:

function loop($a) {
    $newArray = array();
    foreach ($a as $k => $v) {
        if (isset($v['children']) && count($v['children']) > 0 ) {
            $v['children'] = loop($v['children']);
        }

        if ((isset($v['children']) && count($v['children']) > 0) || !empty($v['attribute_id'])) {
            $newArray[$k] = $v;
        }
    }
    return $newArray;
}
$newArray = loop($a);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何遍历多维数组的元素并寻找匹配项?

来自分类Dev

CodeIgniter取消设置多维数组中的Signle会话项

来自分类Dev

从多维数组取消设置数组

来自分类Dev

循环遍历元素的多维数组?

来自分类Dev

循环遍历多维数组 - PHP

来自分类Dev

php取消键值匹配的多维数组元素

来自分类Dev

遍历多维数组并找到匹配的值

来自分类Dev

嵌套的for循环如何遍历多维数组?

来自分类Dev

循环遍历多维数组并输出值

来自分类Dev

循环遍历多维数组并检查条件

来自分类Dev

使用 PHP 循环遍历多维数组

来自分类Dev

如何取消设置动态生成的多维数组

来自分类Dev

PHP多维度数组取消设置

来自分类Dev

循环遍历列以查找匹配项 - VBA

来自分类Dev

在第一个匹配项后循环遍历数组并执行其他操作?

来自分类Dev

在第一个匹配项后循环遍历数组并执行其他操作?

来自分类Dev

PHP循环中取消设置数组

来自分类Dev

在 foreach 循环中取消设置数组元素

来自分类Dev

循环遍历多维 Json

来自分类Dev

Swift循环遍历具有多维数组的Dictionary plist

来自分类Dev

在Perl中循环遍历数组的多维哈希

来自分类Dev

使用foreach循环同时遍历两个多维数组

来自分类Dev

在Perl中循环遍历数组的多维哈希

来自分类Dev

循环遍历数组并通过索引获得多维

来自分类Dev

如何循环遍历多维数组而不会出现 outOfBounds 错误

来自分类Dev

根据值不起作用取消设置多维数组项

来自分类Dev

取消设置多维数组中的所有id键

来自分类Dev

遍历多维数组

来自分类Dev

C ++遍历多维数组