str*_*rks -1 php arrays sorting
我有一个key => value数组:
a => 2
c => 1
b => 3
Run Code Online (Sandbox Code Playgroud)
我试过这个:
ksort($result);
arsort($result);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我试图按字母顺序排序az,然后按值递增0-infinity对其进行排序.
所以我应该得到
c => 1
a => 2
b => 3
Run Code Online (Sandbox Code Playgroud)
但那些种类没有给我我想要的东西.
尝试使用asort()而不是arsort(). arsort()将以相反的顺序对数组进行排序.这样的事情应该"有效":
$test = array(
'a' => 0,
'b' => 1,
'c' => 2
);
ksort($test);
asort($test);
Run Code Online (Sandbox Code Playgroud)
马里奥是正确的,如果多个项目包含相同的值,这将无效.或者,您可以使用uksort(),它允许您准确定义数组的排序方式.例如,您可以默认使用其值对两个项目进行排序.但是如果值的键是相同的排序.
$test = array(
'a' => 2,
'd' => 1,
'c' => 1,
'b' => 3
);
function cmp($a, $b){
global $test;
$val_a = $test[$a];
$val_b = $test[$b];
if($val_a == $val_b){
return ($a < $b) ? -1 : 1;
}
return ($val_a < $val_b) ? -1 : 1;
}
uksort($test, 'cmp');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
733 次 |
| 最近记录: |