2012-04-10 70 views
1

嘿Guyz我在陣列中的問題排序,我不知道如何解決售後服務這個,如果你有這方面的任何解決方案,然後回答我數組排序問題(從低到高)

基本上我想要解決這陣與avg_pred_error(從低到高)這樣的36 39 39 41

Array 
(
    [0] => Array 
     (
      [avg_pred_error] => 39 
      [user_name] => Abdul Samad 
     ) 

    [1] => Array 
     (
      [avg_pred_error] => 41 
      [user_name] => Kane Marcus 
     ) 

    [2] => Array 
     (
      [avg_pred_error] => 39 
      [user_name] => Sam Shawn 
     ) 

    [3] => Array 
     (
      [avg_pred_error] => 36 
      [user_name] => Axel Woodgate 
     ) 

) 
+0

閱讀關於[數組排序(http://il.php.net/manual/en/array.sorting.php)和專門['usort()' ](http://il.php.net/manual/en/function.usort.php) – 2012-04-10 14:51:53

+0

http://stackoverflow.com/questions/2699086/php-sort-multidimensional-array-by-value – billyonecan 2012-04-10 14:54:56

回答

4

使用usort。下面基本上是從手動基本例如:

function cmp($a, $b) { 
    if ($a['avg_pred_error'] == $b['avg_pred_error']) 
     return 0; 

    return ($a['avg_pred_error'] < $b['avg_pred_error']) ? -1 : 1; 
} 

// Sort (LOW to HIGH) and print the resulting array 
usort($array, 'cmp'); 
print_r($array); 
+0

Thanx for sharing你與我的經歷@Josh – 2012-04-10 15:33:08

+0

沒問題,@薩馬德。 – Josh 2012-04-10 15:36:23

0
usort($list, function($entry1, $entry2) {return strcmp($entry1['avg_pred_error'], $entry2['avg_pred_error']);}); 

所以,結果是在$列表

0

幸運的是,這是相當簡單。使用uasort提供自己的比較函數:

<?php 
$foo = array(
    array(
     'avg_pred_error' => 39, 
     'user_name' => 'Abdul Samad' 
    ), 
    array(
     'avg_pred_error' => 41, 
     'user_name' => 'Kane Marcus' 
    ), 
    array(
     'avg_pred_error' => 39, 
     'user_name' => 'Sam Shawn' 
    ), 
    array(
     'avg_pred_error' => 36, 
     'user_name' => 'Axel Woodgate' 
    ) 
); 

$sort = function($a, $b) { 
    if($a['avg_pred_error'] === $b['avg_pred_error']) { 
     return 0; 
    } 
    return $a['avg_pred_error'] < $b['avg_pred_error'] ? '-1' : '1'; 
}; 

uasort($foo, $sort); 

var_dump($foo);