Как отсортировать массив массивов в php?

В php у меня есть численный массив ассоциативных массивов:

mainArray: [ array1:['title':'Record a','order':'2'], array2:['title':'Record b','order':'4'], array3:['title':'Record c','order':'1'], array4:['title':'Record d','order':'3'] ] 

Каков самый простой способ сортировки mainArray по значению «order» каждого ассоциативного массива?

благодаря

Solutions Collecting From Web of "Как отсортировать массив массивов в php?"

Вы можете использовать функцию usort . Начиная с PHP 5.4 вы можете использовать функцию закрытия:

 usort($mainArray, function ($a, $b) { $a_val = (int) $a['order']; $b_val = (int) $b['order']; if($a_val > $b_val) return 1; if($a_val < $b_val) return -1; return 0; }); 

Или версия для PHP <5.4:

 usort($mainArray, 'myCompare'); function myCompare($a, $b) { $a_val = (int) $a['order']; $b_val = (int) $b['order']; if($a_val > $b_val) return 1; if($a_val < $b_val) return -1; return 0; } 

Я нашел это в комментариях документации php для asort () См. Также страницу sort () , в комментариях есть несколько хороших кандидатов.

 function named_records_sort($named_recs, $order_by, $rev=false, $flags=0) {// Create 1-dimensional named array with just // sortfield (in stead of record) values $named_hash = array(); foreach($named_recs as $key=>$fields) $named_hash["$key"] = $fields[$order_by]; // Order 1-dimensional array, // maintaining key-value relations if($reverse) arsort($named_hash,$flags=0) ; else asort($named_hash, $flags=0); // Create copy of named records array // in order of sortarray $sorted_records = array(); foreach($named_hash as $key=>$val) $sorted_records["$key"]= $named_recs[$key]; return $sorted_records;} // named_recs_sort() function show_sorted_records($named_recs, $order_by, $rev=false, $flags=0) {$sorted_records=named_records_sort($named_recs, $order_by, $rev, $flags); foreach($sorted_records as $name=>$fields) {echo "<b>$name</b> "; foreach($fields as $field=>$val) echo "$field = $val "; echo "<br>";} } // show_sorted_records() $girl_friends=array(); $girl_friends["Anna"]= array("born"=>'1989-08-22',"cupsize"=>'B-',"IQ"=>105, "daddy"=>'rich'); $girl_friends["Zoe"] =array("born"=>'1978-03-11',"cupsize"=>'C#',"IQ"=>130, "daddy"=>'poor'); $girl_friends["Lilly"] =array("born"=>'1985-06-16',"cupsize"=>'DD',"IQ"=>90, "daddy"=>'nasty'); $order_by="cupsize"; echo "And the winners are: <br>"; show_sorted_records($girl_friends, $order_by, true);