Come ordinare un arrays multidimensionale con una determinata chiave?

Questo dovrebbe essere molto semplice, ma qual è il modo di procedere. Voglio ordinare una matrix multidimensionale con una chiave, come questa:

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 )) 

Dire che voglio ordinare questo da [stato], come potrei get questo? Grazie in anticipo!

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

Questo dovrebbe fare ciò che vuoi, puoi modificare la function di confronto per ordinare su qualsiasi tasto tu voglia.

Prova questo: utilizzando arrays_multisort

 $sort = arrays(); foreach($your_arrays as $k=>$v) { $sort['status'][$k] = $v['status']; } arrays_multisort($sort['status'], SORT_DESC, $your_arrays); echo "<pre>"; print_r($your_arrays); 

Rif: http://php.net/manual/en/function.arrays-multisort.php

la function usort è ciò che stai cercando:

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

Prova questo

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

Ho aggiunto questa risposta all'arrays multidimensionale Sort per chiave specifica, ordinando la chiave specifica dell'arrays per ordinare il valore dell'arrays.

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

Chiama questa function con un tasto arrays specifico

 sortBy('status', $arrays);