我有一系列人名:
Array
(
[1] => A. Aitken
[2] => A. C. Skinner
[3] => A. Chen
[4] => R. Baxter
)
在php中按姓氏(按字母顺序)对数组进行排序的最快方法是什么?即给予
Array
(
[1] => A. Aitken
[4] => R. Baxter
[3] => A. Chen
[2] => A. C. Skinner
)
答案 0 :(得分:5)
function cmp($a, $b)
{
$a1 = explode(' ', $a);
$b1 = explode(' ', $b);
return strcasecmp(end($a1), end($b1));
}
usort($arr, 'cmp');
答案 1 :(得分:3)
答案 2 :(得分:1)
您可以使用decorate-sort-undecorate模式进行排序,键是数组的最后一个元素,它是用空格分割字符串的结果
$arr = array(
'A. Aitken',
'A. C. Skinner',
'A. Chen',
'R. Baxter'
);
// actual sorting below
$arr= array_map(create_function('$a', 'return array(array_slice(explode(" ", $a), -1), $a);'), $arr); // transform into array of arrays consisted of sort key and item
sort($arr); // sort array of arrays
$arr = array_map('end', $arr); // take only last element from each array
print_r($arr);