2013-05-16 48 views
1

排序關聯數組的數組,所以我有一個數組:如何通過價值

$array = (
    array('name' => 'John' , 'total' => '33'), 
    array('name' => 'Robert' , 'total' => '66'), 
    array('name' => 'John' , 'total' => '22'), 
) 

我想用總的數組進行排序。

所以輸出將是:

$array = (
    array('name' => 'Robert' , 'total' => '66') 
    array('name' => 'John ' , 'total' => '33') 
    array('name' => 'John' , 'total' => '22') 
) 

我怎樣才能做到這一點?

+1

檢查'在array_multisort()'。 – Voitcus

+1

閱讀http://www.php.net/manual/en/function.array-multisort.php – Anigel

+0

非常感謝。 – user2385273

回答

1

使用在array_multisort方法

$arr = array(
    array('name' => 'John' , 'total' => '33'), 
    array('name' => 'Robert' , 'total' => '66'), 
    array('name' => 'John' , 'total' => '22'), 
); 

$total = array(); 
foreach ($arr as $key => $row) 
{ 
    $total[$key] = $row['total']; 
} 
array_multisort($total, SORT_DESC, $arr); 
+0

這就是我所做的,它爲我工作。 – user2385273

0
function totalDescSort($item1, $item2) 
{ 
    if ($item1['total'] == $item2['total']) return 0; 
    return ($item1['total'] < $item2['total']) ? 1 : -1; 
} 
usort($array,'totalDescSort'); 

從這裏:https://stackoverflow.com/a/1597788/623400

1

使用Multisort此

$total = array(); 
foreach ($array as $key => $row) 
{ 
    $total[$key] = $row['total']; 
} 
array_multisort($total, SORT_DESC, $array); 
0

我認爲你可以使用array_multisort()訂購您的數組元素在DESCENDING順序:

$array = array(

    array('name' => 'John', 'total' => '33'), 
    array('name' => 'Robert', 'total' => '66'), 
    array('name' => 'John', 'total' => '22') 

); 

array_multisort($array, SORT_DESC); 
var_dump($array); 

這將輸出

array(3) { 
    [0]=> 
    array(2) { 
    ["name"]=> 
    string(6) "Robert" 
    ["total"]=> 
    string(2) "66" 
    } 
    [1]=> 
    array(2) { 
    ["name"]=> 
    string(4) "John" 
    ["total"]=> 
    string(2) "33" 
    } 
    [2]=> 
    array(2) { 
    ["name"]=> 
    string(4) "John" 
    ["total"]=> 
    string(2) "22" 
    } 
} 

DEMO