PHP数组排序无法按预期工作

时间:2017-04-19 06:54:05

标签: php arrays sorting

下面是我的数组的输出

$array1 = Array ( [d] => 5 [e] => 1 [a] => 3 [b] => 3 [c] => 3 [f] => 3 )

我想把它排序为......

Array ( [d] => 5 [a] => 3 [b] => 3 [c] => 3 [f] => 3 [e] => 1)

我正在使用arsort($ array1)

会产生var_dump($array1)

array (size=6)
'd' => int 5
'f' => int 3
'c' => int 3
'a' => int 3
'b' => int 3
'e' => int 1

无论如何要解决这个问题?

3 个答案:

答案 0 :(得分:2)

试试这个:

$array1 = [
    'd' => 5,
    'e' => 1,
    'a' => 3,
    'b' => 3,
    'c' => 3,
    'f' => 3
];

array_multisort(array_values($array1), SORT_DESC, array_keys($array1), SORT_ASC, $array1);

print_r($array1);

此处首先array_values($array1), SORT_DESC将按降序对值进行排序,然后array_keys($array1), SORT_ASC将按键升序排序,最后两者都应用于主数组,即$array1

O/P - Array ( [d] => 5 [a] => 3 [b] => 3 [c] => 3 [f] => 3 [e] => 1 ) 

我希望这次我得到你想要的东西。手指交叉!!!

答案 1 :(得分:0)

你可以这样工作。

    <?php
    $array1 = array( "[d]" => 5,"[e]" => 1,"[a]" => 3,"[b]" => 3,"[c]" => 3,"[f]" => 3 );
    $a = arsort($array1);
    foreach($array1 as $x => $x_value) {
        echo "Key=" . $x . ", Value=" . $x_value;
        echo "<br>";
    }
    ?>
output:
Key=[d], Value=5
Key=[f], Value=3
Key=[c], Value=3
Key=[a], Value=3
Key=[b], Value=3
Key=[e], Value=1

答案 2 :(得分:0)

你可以使用uasort。

$array = array('d' => 5, 'e' => 1, 'a' => 3, 'b' => 3, 'c' => 3, 'f' => 3);
function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a > $b) ? -1 : 1;
}
uasort($array, 'cmp');
print_r($array);

我测试了代码,肯定会对你有用。