2012-04-10 74 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);