Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环遍历嵌套数组php和前缀值_Php_Arrays_Json - Fatal编程技术网

循环遍历嵌套数组php和前缀值

循环遍历嵌套数组php和前缀值,php,arrays,json,Php,Arrays,Json,读取数组中的所有前缀值。如果slug value是modules,则结果将是api/v1/tenants/modules/{id},相反,如果slug value fetch,则结果将是api/v1/tenants/fetch/{id} "slug" => "api", "children" => [ "prefix" => "v1", "slug" => "v1",

读取数组中的所有前缀值。如果slug value是modules,则结果将是api/v1/tenants/modules/{id},相反,如果slug value fetch,则结果将是api/v1/tenants/fetch/{id}

        "slug" => "api",
        "children" => [
            "prefix" => "v1",
            "slug" => "v1",
            "children" => [
                "prefix" => "tenants",
                "slug" => "tenants",
                "children" => [
                    [
                        "prefix" => "fetch/{id}",
                        "slug" => "fetch",
                    ],
                    [
                        "prefix" => "modules/{id}",
                        "slug" => "modules",
                    ]


                ],
            ],
        ],

您可以使用递归遍历数组

$res = [];
// & so that it keeps data of $res in every loop
array_walk_recursive($arr, function ($item, $key) use (&$res) {
    if ($key == 'prefix') {
        $res[] = $item; // fetching only prefix values recursively
    }

});
// this is your generated url
echo implode("/", $res);

输出

api/v1/tenants/modules/{id}
我将其用作:

现在,
$ps
是前缀的数组。然后您可以使用
内爆
添加
/


活生生的例子:

不确定是否需要使用
global
同意,@Drakula post更好一点(在我发布我的帖子后看到)
function getPrefix($v, $k) { global $ps; if ($k == "prefix") $ps[] = $v; }
array_walk_recursive($arr, 'getPrefix');