我正在使用asort对一个简单的数组进行排序:
$arr = array('A'=>30, 'B'=>12, 'K'=>23, 'X'=>1, 'H'=>11, 'T'=>1, 'U'=1);
asort($arr)
产量
Array
(
[A] => 30
[K] => 23
[B] => 12
[H] => 11
[X] => 1
[T] => 1
[Z] => 1
)
在一次调用中是否存在按值和键排序的本机方式(同时保留键/值关系)?
例如,我希望我的结果能够像这样结束:
Array
(
[A] => 30
[K] => 23
[B] => 12
[H] => 11
[T] => 1
[X] => 1
[Z] => 1
)
答案 0 :(得分:1)
原生功能没有,但有一些方法可以轻松完成
答案 1 :(得分:0)
<?php
$arr = array('A'=>30, 'B'=>12, 'K'=>23, 'X'=>1, 'H'=>11, 'T'=>1, 'U'=>1);
Function ArrSort ($Array){
$tag = array();
$num = array();
foreach($Array as $key => $value){
$tag[] = $key;
$num[] = $value;
}
array_multisort($num, SORT_DESC, $tag, SORT_ASC, $Array);
return $Array;
}
print_r(ArrSort($arr));
?>
输出:
Array
(
[A] => 30
[K] => 23
[B] => 12
[H] => 11
[T] => 1
[U] => 1
[X] => 1
)
上面的块已被编辑成位于此处的原始帖子中的函数:PHP array multiple sort - by value then by key?