array_multisort() Frage

rollerueckwaerts

Erfahrenes Mitglied
Hallo liebe Tutorials.de Gemeinde,

ich habe einen mehrdimensionalen assoziativen Array und würde den gerne sortieren.
Der Array ist im groben Aufgebaut wie im Screenshot.
Momentan ist er ja nach der id sortiert. Würde ihn aber gerne nach der latitute sortieren.

PHP:
array_multisort($bigArray['latitude'], SORT_NUMERIC, SORT_DESC );
bringt die Meldung das Arg1 kein Array ist. Find ich ja auch logisch. Aber nehm ich ['latitude'] raus gibts ja keinen Hinweis mehr darauf nach was sortiert werden soll.

Jemand nen Tipp für mich?
Wär cool :)
 

Anhänge

  • Bildschirmfoto 2012-03-20 um 13.43.51.png
    Bildschirmfoto 2012-03-20 um 13.43.51.png
    8,5 KB · Aufrufe: 9
Das entpspricht dem PHP-Doku-Beispiel 'Datenbankdaten sortieren' zu array_multisort()
PHP:
//Testdaten
$data[] = array('id' => 1000, 'longitude' => 25, 'latitude' => 13);
$data[] = array('id' => 1000, 'longitude' => 86, 'latitude' => 43);
$data[] = array('id' => 1000, 'longitude' => 234, 'latitude' => -5);

//Ein Array mit den latitude extrahieren
foreach($data as $array){
    $latitudes[] = $array['latitude'];
}

//Nach dem latitude-Array sortieren und $data mitsortieren
array_multisort($latitudes, SORT_ASC, $data);

var_dump($data);

Wenn du mehrere solche Sortierungen brauchst, empfehle ich dir meine Funktion array_extract_sub_item() zu verwenden
PHP:
array_multisort(array_extract_sub_item($data, 'latitude'), SORT_ASC, $data);

var_dump($data);


//http://wiki.yaslaw.info/wikka/PhpArrayExtractSubItem
/**
 * Extrahieren ein Subitem aus einem mehrstufigen Array. Der Schlüssel wird beibehalten
 * @param   Array<Key => Array<Node>>   Ein mehrstufiger Array
 * @param   String                      Schlüssel des zu extrahierenden Item
 * @return  Array<Key => Node>
 */
function array_extract_sub_item($array, $key){
    foreach($array as $index => $item) $retArray[$index] = $item[$key];
    return $retArray;
}
 
Zurück