你好如何按键和值排序数组...所以如果用户输入这个值
$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。有人帮我解决这个问题吗?
答案 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);
或更短的版本
$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
)