php - 循环遍历多维数组

标签 php arrays loops multidimensional-array

我有一个类似于此的 JSON 文件:

{
"Pages":{
        "/":{
            "Name": "Home",
            "Page": "index.php"
        },

        "/_admin":{
            "Name": "Admin",
            "Page": "_admin/index.php",

            "Template": "admin",
            "MobileTemplate": "admin-mobile",

            "Pages":{

                "/settings":{
                    "Name": "Settings",
                    "Page": "_admin/settings/index.php",
                    "Config": "_admin/settings/config.php",

                    "Pages":{

                        "/user":{
                            "Name": "Users",
                            "Page": "_admin/settings/user.php",
                            "Config": "_admin/settings/config.php",
                            "CatchAll": true
                        }

                    }

                }
            }
        },

        "/tasdf":{
            "Name": "fs",
            "Page": "index.php"
        }
    }
}

我试图遍历这个数组(我已经使用 JSON 解码将其转换为 PHP),并且我想为“页面”的每个 block 添加额外的数据。

例如,工作应该是这样的:

Array Loop Starts
Finds "Pages"
    -Goes through "/"
    -No "Pages" - continue
   - Goees through "/_admin"
       -Finds "Pages"
       -Goes through "/settings"
           -Finds "Pages"
           -Goes Through "/user"
           -No Pages Continue
   - Goes through "/tasdf"
   - No "Pages" - continue
 End Loop

每次它经过一个部分时,我都希望它与另一个数组合并。

我正在努力编写代码以查看它在每次找到单词“Pages”作为键时一直循环。我尝试了很多次,但一直在报废我的代码。

任何帮助都会很棒!

最佳答案

您正在寻找一个递归函数,该函数将您的数组扫描到 n 的深度。像这样的东西可以工作:

function findPagesInArray($myArray) {
    foreach($myArray as $index => $element) {
        // If this is an array, search deeper
        if(gettype($element) == 'array') {
            findPagesInArray($element);
        }

        // Reached the Pages..
        if($index == 'Pages') {
            // Do your task here
        }
    }
}

现在您可以通过调用 findPagesInArray($json_object) 来使用它

关于php - 循环遍历多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15917022/

相关文章:

c - 尝试从文件中获取字符串并访问字符串中的各个字母时程序崩溃

php - 你可以帮我使用用户类型登录吗

python - 在 Python 中使用新轴

c++ - 二维数组指针不适用于两个维度

python - 加快Python中的集成功能

vba - 连续循环刷新公式

php - 整个站点的单一类别表或不同用例的不同表

php - 在网格表中使用 Ajax 的指南

php - Symfony - 如何添加未嵌入基础对象的表单字段

ios - 从 NSMutableArray 中移除所有符合条件的对象