Проход по вложенному массиву php и значение префикса - PullRequest
0 голосов
/ 27 июня 2019

Считывает все значения префикса в массиве. Если значение slug равно modules, результатом будет api / v1 / tenants / modules / {id}, в отличие от извлечения значения slug, будет 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",
                    ]


                ],
            ],
        ],

Array list

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

Я использую array-walk-recursive as:

function getPrefix($v, $k) { global $ps; if ($k == "prefix") $ps[] = $v; }
array_walk_recursive($arr, 'getPrefix');

Теперь $ps - это массив префикса. Затем вы можете использовать implode, чтобы добавить /

Живой пример: 3v4l

2 голосов
/ 27 июня 2019

Вы можете использовать array_walk_recursive для рекурсивного обхода массива,

$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}
...