2011-09-15 29 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 –

+0

と別の重複:http://stackoverflow.com/questions/1795244/sorting-a-multidimensional-array-in-php/1795268#1795268 –

答えて

5

また、これは私がusort()やクロージャを使用して動作するようにそれを得た

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

これは、あなたが必要なものを行う必要があります。私は、並べ替えに、uasort()、カスタムソート関数のいずれかを使用してい

<?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'); 

3

動作します。

 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