Я даже не знает, как начать формулировку этого вопрос, но в принципе, у меня есть массив, который выглядит следующим образом:PHP - Создание иерархического массива
Array
(
[0] =>/
[1] => /404/
[2] => /abstracts/
[3] => /abstracts/edit/
[4] => /abstracts/review/
[5] => /abstracts/view/
[6] => /admin/
[7] => /admin/ads/
[8] => /admin/ads/clickcounter/
[9] => /admin/ads/delete/
[10] => /admin/ads/edit/
[11] => /admin/ads/list/
[12] => /admin/ads/new/
[13] => /admin/ads/sponsordelete/
[14] => /admin/ads/sponsoredit/
[15] => /admin/ads/sponsornew/
[16] => /admin/ads/stats/
[17] => /admin/boilerplates/
[18] => /admin/boilerplates/deleteboiler/
[19] => /admin/boilerplates/editboiler/
[20] => /admin/boilerplates/newboilerplate/
[21] => /admin/calendar/event/add/
[22] => /admin/calendar/event/copy/
)
И мне нужно, чтобы «уменьшить»/" процесс в массив, который выглядит следующим образом:
Array
(
[''] => Array()
['404'] => Array()
['abstracts'] => Array
(
[''] => Array()
['edit'] => Array()
['review'] => Array()
['view'] => Array()
)
['admin'] => Array
(
['ads'] => Array
(
[''] => Array()
['clickcounter'] => Array()
['delete'] =>Array()
['edit'] => Array()
)
)
.....
.....
)
что, если вручную инициализируется будет выглядеть примерно так:
$urlTree = array('' => array(),
'404' => array(),
'abstracts'=> array('' => array(),
'edit' => array(),
'review'=> array(),
'view' => array()),
'admin' => array('ads'=> array('' => array(),
'clickcounter'=> array(),
'delete' => array(),
'edit' => array()))
);
Я обычно отклоняюсь от запроса прямо на кусок кода на SO, но есть ли у кого-нибудь какие-либо советы/коды, которые могут пересекать мой массив и преобразовывать его в иерархию?
EDIT: Вот бит, который у меня есть прямо сейчас, и я знаю, что это жалко мало, я просто затушевываю сегодня.
function loadUrlData()
{
// hold the raw data, /blah/blah/
$urlData = array();
$res = sql::query("SELECT DISTINCT(`url`) FROM `pages` ORDER BY `url` ASC");
while($row = sql::getarray($res))
{
$urlData[] = explode('/', substr($row['url'], 1, -1));
}
// populated, eventually, with the parent > child data
$treeData = array();
// a url
foreach($urlData as $k=> $v)
{
// the url pieces
foreach($v as $k2=> $v2)
{
}
}
// $treeData eventually
return $urlData;
}
Не должны ли все URL-адреса, такие как 404, аннотация и т. Д. Находиться внутри ''? –