Hello,
Besten Dank, natürlich auch an alle anderen!
Beispiel?
Lösung?
ja kommt ..., war mir gestern nur zu spät und außerdem habe ich noch eine Sortierfunktion dazu gebaut. Ich hoffe, mir sind beim anpassen an die Demo-Version hier keine Fehler unterlaufen!?
Im Original funktioniert es jedenfalls ...! ;-)
$paths = array(
'abc' => array('order' => '2'),
'abc/abc' => array('order' => '1'),
'abc/def' => array('order' => '3'),
'abc/ghi' => array('order' => '2'),
'def' => array('order' => '1'),
'def/abc' => array('order' => '2'),
'def/def' => array('order' => '1'),
'abc/def/abc' => array('order' => '2'),
'abc/def/def' => array('order' => '1'),
'ghi' => array('order' => '3')
);
$meinArray = array();
foreach($paths as $index => $tmp) {
if($index == 'frontpage') continue;
$indexes = explode('/', $index);
$counter = count($indexes);
if($counter > 1) {
$meinArrayReference = &$meinArray;
for($i = 0; $i < ($counter - 1); $i++) {
if (!array_key_exists($indexes[$i], $meinArrayReference)) {
$meinArrayReference[$indexes[$i]] = array();
}
$meinArrayReference = &$meinArrayReference[$indexes[$i]];
}
$meinArrayReference[$indexes[$i]] = array('order' => $tmp['order']);
}
else {
$meinArray[$indexes[0]] = array('order' => $tmp['order']);
}
}
uasort($meinArray, 'cmp');
$meinArray = sortMultiArray($meinArray);
print_r($meinArray);
exit;
function sortMultiArray($arr) {
foreach ($arr as &$subArr) {
if(count($subArr) > 1) {
uasort($subArr, 'cmp');
sortMultiArray($subArr);
}
}
return $arr;
}
function cmp($a, $b) {
if ($a['order'] == $b['order']) {
return 0;
}
return ($a['order'] < $b['order']) ? -1 : 1;
}
Macht zumindest jetzt das, was ich möchte und für die weitere Verarbeitung brauche.
Verbesserungsvorschläge sind natürlich jederzeit willkommen - danke!
Gruß Gunther