У меня есть массив 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',
],
],
];
Я сделал простую функцию, чтобы превратить ваш массив в трехмерный:
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;
}
Других решений пока нет …