2011-09-15 150 views
0

索引数组的数组,比方说,你有一个数组,看起来像这样:PHP排序根据阵列

$myArray []= array('firstname' => 'John' , 'lastname'=> 'Johnson'); 

$myArray []= array('firstname' => 'Adam' , 'lastname'=> 'Tyson'); 

$myArray []= array('firstname' => 'Mike' , 'lastname'=> 'Robinson'); 

$myArray []= array('firstname' => 'David' , 'lastname'=> 'Jackson'); 

你怎么能排序$ myarray的根据姓氏?

+0

可能重复:http://stackoverflow.com/questions/1905617/how-do-i-sort-multidimension-array-in-php – 2011-09-15 04:22:40

+0

和另一个重复:http://stackoverflow.com/questions/1795244/sorting-a-multidimensional-array-in-php/1795268#1795268 – 2011-09-15 04:23:08

回答

5

这也适用

<?php 
    $myArray []= array('firstname' => 'John' , 'lastname'=> 'Johnson'); 
    $myArray []= array('firstname' => 'Adam' , 'lastname'=> 'Tyson'); 
    $myArray []= array('firstname' => 'Mike' , 'lastname'=> 'Robinson'); 
    $myArray []= array('firstname' => 'David' , 'lastname'=> 'Jackson'); 

    foreach ($myArray as $array) { 
     $lastnames[] = $array['lastname']; 
    } 

    array_multisort($lastnames,SORT_STRING,$myArray); 
    echo '<pre>',print_r($myArray,1),'</pre>'; 
2

这应该做你需要的东西:

<?php 
function cmp($a, $b) { 
    return strcasecmp($a['lastname'], $b['lastname']); 
} 

$myArray[] = array('firstname' => 'John', 'lastname'=> 'Johnson'); 
$myArray[] = array('firstname' => 'Adam', 'lastname'=> 'Tyson'); 
$myArray[] = array('firstname' => 'Mike', 'lastname'=> 'Robinson'); 
$myArray[] = array('firstname' => 'David', 'lastname'=> 'Jackson'); 

uasort($myArray, 'cmp'); 

我使用uasort(),自定义排序功能之一,对排序。

3

我得到了它使用usort()和关闭工作。

 usort($myArray, function($a, $b){ 
      return strcasecmp($a['lastname'], $b['lastname']); 
     }); 
+0

对于PHP 5.3及更高版本... http://www.php.net/manual/en/functions.anonymous.php – StefanNch