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 ?

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

我使用ussort()和闭包让它工作。

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

这应该可以满足您的需求:

<?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()来排序。

相关内容

  • 没有找到相关文章

最新更新