<?php
$menu = array(
array(1,3,'Wurm 1.1', 2, 10),
array(2,6,'Vogel 2.1', 2, 30),
array(3,0,'Tiger 1', 1, 10),
array(4,6,'Hund 2.2', 2, 40),
array(5,3,'Katze 1.2', 2, 11),
array(6,0,'Pferd 2', 1, 20),
array(7,1,'Baer 1.1.1', 3, 0),
array(8,3,'Schwein 1.3', 2, 12),
array(9,4,'Esel 2.2.1', 3, 0),
);
// Algorithmus hier
$result = array();
$target = array(
array(9,4,'Esel 2.2.1', 3, 0),
);
var_dump($result == $target);
$navitems = array(
array(
1, // Menuid
3, // parentid
'Wurm 1.1', // title
2, // level
10 // sortid
),
array(
2, // Menuid
6, // parentid
'Vogel 2.1', // title
2, // level
30 // sortid
),
array(
3, // Menuid
0, // parentid
'Tiger 1', // title
1, // level
10 // sortid
),
array(
4, // Menuid
6, // parentid
'Hund 2.2', // title
2, // level
40 // sortid
),
array(
5, // Menuid
3, // parentid
'Katze 1.2', // title
2, // level
11 // sortid
),
array(
6, // Menuid
0, // parentid
'Pferd 2', // title
1, // level
20 // sortid
),
array(
7, // Menuid
1, // parentid
'Baer 1.1.1', // title
3, // level
0 // sortid
),
array(
8, // Menuid
3, // parentid
'Schwein 1.3', // title
2, // level
12 // sortid
),
array(
9, // Menuid
4, // parentid
'Esel 2.2.1', // title
3, // level
0 // sortid
)
);
function array_orderby()
{
$args = func_get_args();
$data = array_shift($args);
foreach ($args as $n => $field) {
if (is_string($field)) {
$tmp = array();
foreach ($data as $key => $row)
$tmp[$key] = $row[$field];
$args[$n] = $tmp;
}
}
$args[] = &$data;
call_user_func_array('array_multisort', $args);
return array_pop($args);
}
function listItems($items, $level=0, $child=false, $pid=0) {
array_orderby($items, '4');
$rest = '';
foreach($items as $item) {
if ($item[3] != $level) {
continue;
}
if ($child == false) {
$rest .= '<li>'. $item[2] .'<ul>'. listItems($items, $level+1, true, $item[0]) .'</ul></li>';
} else {
if ($pid == $item[1]) {
$rest .= '<li>'. $item[2] .'<ul>'. listItems($items, $level+1, true, $item[0]) .'</ul></li>';
}
}
}
return '<ul>' . $rest . '</ul>';
}
echo listItems($navitems);
preferences:
40.05 ms | 402 KiB | 5 Q