使用未知键对数组进行排序,并在php中维护索引关联

时间:2012-02-22 09:41:46

标签: php sorting indexing associations asort

我有一个数组,其中包含从2次执行中获取的统计值及其差异。统计的名称是关键,我不知道。我想维护索引关联

就像这样

$array["statistic_name_1"][0] = 5
$array["statistic_name_1"][1] = 4
$array["statistic_name_1"][2] = 1   

$array["statistic_name_2"][0] = 10
$array["statistic_name_2"][1] = 4
$array["statistic_name_2"][2] = 6

$array["statistic_name_3"][0] = 15
$array["statistic_name_3"][1] = 10
$array["statistic_name_3"][2] = 5

...

我希望根据执行的差异(这是[键] [2])按数字顺序排序

我试过asort但是我找不到告诉它根据差异排序的方法

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

function cmp($a, $b)
{
    return $b[2] - $a[2]
}

uasort($array, "cmp");

http://www.php.net/manual/en/function.uasort.php

要将所有内容放在一行上,您可以这样做:

uasort($array, function($a, $b){ return $b[2] - $a[2] });

答案 1 :(得分:0)

使用uasort维护密钥关联

uasort($array,function ($a,$b){
    if ($a[2] == $b[2]) {
        return 0;
    }
    return ($a[2] > $b[2]) ? -1 : 1;
});