<?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_msort($array, $cols)
{
$colarr = array();
foreach ($cols as $col => $order) {
$colarr[$col] = array();
foreach ($array as $k => $row) { $colarr[$col]['_'.$k] = strtolower($row[$col]); }
}
$eval = 'array_multisort(';
foreach ($cols as $col => $order) {
$eval .= '$colarr[\''.$col.'\'],'.$order.',';
}
$eval = substr($eval,0,-1).');';
eval($eval);
$ret = array();
foreach ($colarr as $col => $arr) {
foreach ($arr as $k => $v) {
$k = substr($k,1);
if (!isset($ret[$k])) $ret[$k] = $array[$k];
$ret[$k][$col] = $array[$k][$col];
}
}
return $ret;
}
function listItems($items, $level=0, $child=false, $pid=0) {
array_msort($items, array(4 => SORT_DESC));
$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);
- Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- bool(false)
<ul></ul>
preferences:
285.2 ms | 405 KiB | 455 Q