9.5. Wie kann ich ein Array nach einem beliebigen Kriterium sortieren lassen?Antwort von Kristian KöhntoppPHP stellt eine Reihe von vordefinierten Sortierfunktionen zur Verfügung. Wenn diese nicht ausreichen, kann man mit Hilfe der Funktion usort() nach beliebigen Kriterien sortieren lassen. Der Funktion muss eine Vergleichsfunktion und das zu sortierende Array als Parameter mit übergeben werden. Das nachfolgende Beispiel sortiert ein Array von Paaren alphabetisch nach dem 2. Element. kris@valiant:~ > ./php <?php $a = array( array(0, "Schmidt"), array(2, "Albert") ); function cmp($a, $b) { printf("type a = %s type b = %s\n", gettype($a), gettype($b)); if ($a[1] == $b[1]) return 0; return ($a[1] > $b[1])?1:-1; } usort ($a, "cmp"); foreach($a as $k => $v) printf("k = %s v[0] = %s v[1] = %s\n", $k, $v[0], $v[1]); ?> X-Powered-By: PHP/4.0b5-dev Content-type: text/html; charset=iso-8859-1 type a = array type b = array k = 0 v[0] = 2 v[1] = Albert k = 1 v[0] = 0 v[1] = Schmidt kris@valiant:~ > Antwort von Johannes FrömterWeiterhin gibt es die Funktion array_multisort() , die - gefüttert mit einem passenden (eindimensionalen) "Sortierarray" - mehrdimensionale Arrays nach beliebigen Dimensionen ordnen kann. foreach($a as $v) $s[] = $v[1]; // [1] = Dimension zur Sortierung array_multisort($s, SORT_ASC, $a); // ASC = auf-, DESC = absteigend Durch Einfügen weiterer "Sortierarrays" ($s) vor dem "Nutzarray" $a kann man auch nach mehreren Kriterien gleichzeitig sortieren lassen. Dabei kann nach jedem "Sortierarray" die Sortierrichtung und -art neu bestimmt werden. |
||
9.5. Wie kann ich ein Array nach einem beliebigen Kriterium sortieren lassen? http://www.php-faq.de/q/q-arrays-sortieren.html |
||
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team |