2010-05-10 59 views
4

這應該是非常簡單的,但是怎麼走呢。 我想通過一鍵排序的多維數組,像這樣:如何用特定的鍵排序多維數組?

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

說我想[狀態],按這個,我會怎樣實現這一目標? 在此先感謝!

+0

這個已經被問很多次了 - 看到http://stackoverflow.com/questions/777597/sorting-an-associative-array-in -php,http://stackoverflow.com/questions/96759/how-do-i-sort-a-multidimensional-array-in-php,http://stackoverflow.com/questions/96759/how-do-i -a-multi-dimensional-array-in-php作爲開始 – 2010-05-10 17:12:24

回答

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

usort($array, "cmp"); 

這應該做你想要什麼,你可以改變比較函數進行排序任何你想要的關鍵。

1

usort功能是你在找什麼:

<?php 
    function cmp($a, $b) { 
     return $b["status"] - $a["status"]; 
    } 

    $sorted = usort($your_array, "cmp"); 
    var_dump($sorted); 
?> 
0

試試這個

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

usort($data_array, "cmp_by_status"); 
2

試試這個:使用array_multisort

$sort = array(); 
foreach($your_array as $k=>$v) { 
    $sort['status'][$k] = $v['status']; 
} 

array_multisort($sort['status'], SORT_DESC, $your_array); 


echo "<pre>"; 
print_r($your_array); 

編號:http://php.net/manual/en/function.array-multisort.php

0

我在Sort multi-dimensional array by specific key排序數組特定鍵排序數組增值這個答案。

function sortBy($field, &$array, $direction = 'asc') 
{ 
    usort($array, create_function('$a, $b', ' 
     $a = $a["' . $field . '"]; 
     $b = $b["' . $field . '"]; 

     if ($a == $b) 
     { 
      return 0; 
     } 

     return ($a ' . ($direction == 'desc' ? '>' : '<') .' $b) ? -1 : 1; 
    ')); 

    return true; 
} 

調用此函數通過特定陣列關鍵

sortBy('status', $array);