Wie sortiere ich ein mehrdimensionales Array nach einem bestimmten Schlüssel?

Das sollte wirklich einfach sein, aber wie soll das weitergehen? Ich möchte ein mehrdimensionales Array nach einem Schlüssel sortieren:

Array ( [0] => Array ( [iid] => 1 [invitee] => 174 [nid] => 324343 [showtime] => 2010-05-09 15:15:00 [location] => 13 [status] => 1 [created] => 2010-05-09 15:05:00 [updated] => 2010-05-09 16:24:00 ) [1] => Array ( [iid] => 1 [invitee] => 220 [nid] => 21232 [showtime] => 2010-05-09 15:15:00 [location] => 12 [status] => 0 [created] => 2010-05-10 18:11:00 [updated] => 2010-05-10 18:11:00 )) 

Sagen wir, ich möchte das nach [Status] sortieren, wie würde ich das erreichen? Danke im Voraus!

 //define a comparison function function cmp($a, $b) { if ($a['status'] == $b['status']) { return 0; } return ($a['status'] < $b['status']) ? -1 : 1; } usort($array, "cmp"); 

Das sollte tun, was Sie wollen, Sie können die Vergleichsfunktion ändern, um den gewünschten Schlüssel zu sortieren.

Versuchen Sie array_multisort : Verwenden von array_multisort

 $sort = array(); foreach($your_array as $k=>$v) { $sort['status'][$k] = $v['status']; } array_multisort($sort['status'], SORT_DESC, $your_array); echo "
"; print_r($your_array);

Ref: http://php.net/manual/en/function.array-multisort.php

Usort- function ist was du suchst:

 < ?php function cmp($a, $b) { return $b["status"] - $a["status"]; } $sorted = usort($your_array, "cmp"); var_dump($sorted); ?> 

Versuche dies

 function cmp_by_status($a, $b) { if ($a['status'] == $b['status']) { return 0; } return ($a['status'] < $b['status') ? -1 : 1; } usort($data_array, "cmp_by_status"); 

Ich habe diese Antwort bei Sortieren mehrdimensionalen Array nach spezifischen Schlüssel hinzugefügt Sortieren Sie den Array-spezifischen Schlüssel zum Sortieren Array-Wert.

 function sortBy($field, &$array, $direction = 'asc') { usort($array, create_function('$a, $b', ' $a = $a["' . $field . '"]; $b = $b["' . $field . '"]; if ($a == $b) { return 0; } return ($a ' . ($direction == 'desc' ? '>' : '< ') .' $b) ? -1 : 1; ')); return true; } 

Rufen Sie diese function mit einem bestimmten Array-Schlüssel auf

 sortBy('status', $array);