PHP - 按键和值对数组进行排序

时间:2014-05-03 11:40:13

标签: php arrays sorting

你好如何按键和值排序数组...所以如果用户输入这个值

$input = array(0,1,0,2,0);

然后结果应该是这样的,因为他们也应该保持他们的键的输入相同......

Array
(
    [0] => 0
    [2] => 0
    [4] => 0
    [1] => 1
    [3] => 2
)

不喜欢这样......密钥混乱,我真的很关心我的FCFS调度项目。

Array
(
    [4] => 0
    [0] => 0
    [2] => 0
    [1] => 1
    [3] => 2
)
是的,我用asort。有人帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(0,1,0,2,0);

usort($a, "cmp");

foreach ($a as $key => $value) {
    echo " $value\n";
}

答案 1 :(得分:0)

稳定排序会有所帮助。但是自4.1以来,php没有任何稳定的排序功能。 但你可以使用uksort + closure。

$input = array(0,1,0,2,0);

$cmp = function($a, $b) use($input){
    if($input[$a] > $input[$b]){return 1;}
    elseif($input[$a] < $input[$b]){return -1;}
    elseif($a>$b){return 1;}
    elseif($a<$b){return -1;}
    return 0;
};

uksort($input, $cmp);

print_r($input);

https://eval.in/145923

或更短的版本

$cmp = function($a, $b) use($input){
    return (($input[$a]-$input[$b])?:($a-$b));
};

答案 2 :(得分:0)

简单使用sort function

$input = array(0,1,0,2,0);

sort($input);

Result:-
    Array
    (
        [0] => 0
        [1] => 0
        [2] => 0
        [3] => 1
        [4] => 2
    )