2010-05-10 57 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);