Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
mehrdimensionales Array sortieren [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
mehrdimensionales Array sortieren


 
swimming
01-07-2004, 17:49 
 
Hi Leute,

folgendes Array ist die Grundlage für meine Sortierung:

Array
(
[verein] => Array
(
[name] => Verein
[priority] => 2
[sub] => Array
(
[trainer] => Array
(
[name] => Trainer
[priority] => 2
)
[erfolgsbilanzen] => Array
(
[name] => Erfolgsbilanzen
[priority] => 3
)
[vorstand] => Array
(
[name] => Vorstand
[priority] => 1
)
)
)
[news] => Array
(
[name] => News
[priority] => 1
[sub] => Array
(
[newsletter] => Array
(
[name] => Newsletter
[priority] => 2
)
[archiv] => Array
(
[name] => Archiv
[priority] => 1
)
)
)
[sportler] => Array
(
[name] => Sportler
[priority] => 3
[sub] => Array
(
[bestenliste] => Array
(
[name] => Bestenliste
[priority] => 1
)
[steckbriefe] => Array
(
[name] => Steckbriefe
[priority] => 2
)
)
)
[interaktiv] => Array
(
[name] => Interaktiv
[priority] => 4
)
)


Das ich das Array mit uasort und einer Sortierfunktion sortiere ist mir schon klar. Es ist kein Problem, die erste Ebene des Arrays zu sortieren, sodass dann die Reihenfolge News, Verein, Sportler, Interaktiv herauskommt.
Jetzt meine Frage: Wie stelle ich es denn an, dass ich auch die Unterrubriken sortieren kann? Sollte ich das Array mit foreach durchgehen und dann nach der Rubrik "sub" suchen, oder habt ihr eine andere Idee?

Vielen Dank schon mal.
swimming

 
MelloPie
01-07-2004, 20:52 
 
naja ich würde mir nie so ein array zimmern, aber ich würde es bei der ausgabe dann sortieren...
je nachdem was Du vorhast, wann es eben sinnmacht zu sortieren.

 
Trashar
02-07-2004, 08:49 
 
Wenn ich das richtig verstanden habe..
Vielleicht hilft es dir
mfg
<?php

/**
* @return array
* @param array $array_to_sort
* @desc sort an array and subarrays
*/
function rec_ksort($array_to_sort) {
$temp_array = array();
$arrays = 0;
foreach($array_to_sort AS $id=>$element) {
if(is_array($element)) $arrays++;
}
if($arrays == 0 && count($array_to_sort) > 1) {
ksort($array_to_sort);
}
else {
foreach($array_to_sort AS $id=>$element) {
if(is_array($element)) $temp_array[$id] = rec_uasort($element);
else $temp_array[$id] = $element;
}
ksort($temp_array);
$array_to_sort = $temp_array;
}

return $array_to_sort;

}


$array = array('foo'=>'bar','leck'=>'mich','scheiße'=>'kacke');
$array['mist'] = array('name'=>'hausnummer','arbeit'=>'arbeitlos');
echo '<pre>';
print_r($array);
print_r(rec_ksort($array));
?>

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:29 Uhr.