Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-按键和值对数组排序_Php_Arrays_Sorting - Fatal编程技术网

PHP-按键和值对数组排序

PHP-按键和值对数组排序,php,arrays,sorting,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 [

您好,如何按键和值对数组进行排序。。。所以如果用户输入这个值

$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
)
顺便说一句,我用了一个。有人帮我解决这个问题吗?

函数cmp($a,$b)
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";
}
{ 如果($a=$b){ 返回0; } 回报率($a<$b)?-1:1; } $a=数组(0,1,0,2,0); usort($a,“cmp”); foreach($a作为$key=>$value){ 回显“$value\n”; }
稳定排序在这里会有所帮助。但是php自4.1以来没有任何稳定的排序函数。 但是您可以使用uksort+闭包

$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);

简单使用
排序功能

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

sort($input);

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

此链接可能有助于您复制等待。。下标0始终是第一个键。@VandanaPareek没有这些工作…@JeffLouie:你能解释一下你是如何得到第一个输出的吗?我看不出您的密钥是如何排序的。或者您可以使用sort($input);而且
$input = array(0,1,0,2,0);

sort($input);

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