Php排序数组

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)

但那些种类没有给我我想要的东西.

Jus*_*cas 9

尝试使用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)

  • 你能解释一下哪些不对吗?这会在您的问题中采用相同的原始数组,并为您提供与您的问题完全相同的结果.也许发布你将使用这个实际阵列会有所帮助. (3认同)