$arr=array(
[0]=>array(
[username]=>bsmith
[name]=>Bob Smith
)
[1]=>array(
[username]=>mjohnson
[name]=>Mike Johnson
)
[2]=>array(
[username]=>ameyer
[name]=>Meyer Adam
)
)
需要按照数组的特定子值进行自然(按字母顺序排序)。
如果按“username”=>排序=> ameyer,bsmith,mjohnson
$arr=array(
[0]=>array(
[username]=>ameyer
[name]=>Meyer Adam
)
[1]=>array(
[username]=>bsmith
[name]=>Bob Smith
)
[2]=>array(
[username]=>mjohnson
[name]=>Mike Johnson
)
)
如果按“名称”排序=> bsmith,ameyer,mjohnson
$arr=array(
[0]=>array(
[username]=>bsmith
[name]=>Bob Smith
)
[1]=>array(
[username]=>ameyer
[name]=>Meyer Adam
)
[2]=>array(
[username]=>mjohnson
[name]=>Mike Johnson
)
)
最优雅的方法是什么?
我应该使用uasort吗?
答案 0 :(得分:2)
您需要使用usort
,这将是最简单,最快捷的方法。您只需使用strcmp
的结果代码即可确定Alpha排序顺序。
function sortByUsername($a, $b) {
return strcmp($a['username'], $b['username']);
}
usort($arr, sortByUsername);
答案 1 :(得分:2)
$sorter = function($key) {
return function($data, $data2) use ($key) {
return strcmp($data[$key], $data2[$key]);
};
};
usort($arr, $sorter('username'));
var_dump($arr);
usort($arr, $sorter('name'));
var_dump($arr);
答案 2 :(得分:0)
您可以使用array_multisort
:
foreach ($arr as $array) {
$names[] = $array['name'];
}
array_multisort($names,SORT_STRING,$arr);
print_r($arr);