Как создать дерево URL

У меня есть массив URL, которые выглядят так:

$arr = [
'/foo' => 'callback',
'/foo/bar' => 'callback',
'/foo/bar/baz' => 'callback',
'/bar/baz' => 'callback',
];

Я хочу преобразовать этот массив в древовидную структуру, но я не знаю, как это сделать. Я пытался explode это на / персонаж.

Это должно выглядеть так:

$arr = [
'foo' => [
0 => 'callback',
'bar' => [
0 => 'callback',
'baz' => [
0 => 'callback',
],
],
],
'bar' => [
'baz' => [
0 => 'callback',
],
],
];

-1

Решение

Я сделал простую функцию, чтобы превратить ваш массив в трехмерный:

function tri_array($array) {
$result = array();
foreach ($array as $k => $v) {
$ev = explode("/", $k);
$ev[2] = $ev[2] ? $ev[2] : 0;
$ev[3] = $ev[3] ? $ev[3] : 0;

$result[$ev[1]][$ev[2]][$ev[3]] = $v;
}
return $result;
}
-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]