PHP排序数字全为零而不更改索引

时间:2014-04-22 02:10:15

标签: php arrays

asort(arrivalTime[])不正确。当我全部归零时如何解决这个问题?显示是:

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

它应该是这样的,不会影响索引...因为当所有零都不需要排序......

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

当我输入另一个没有为零时,这将是结果

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

任何人都可以有另一种解决方案吗?

修改 当我使用kso​​rt()这是结果...当我输入0,2,1 这是简单的代码

<?php
    $test = array(0,2,1);
    ksort($test);
    echo "<pre>";
    print_r($test);
    echo "</pre>";
?>

输出是bug

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

我想要的只是当我放0,0,0,1并且不更改密钥时因为它是相同的...

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

然后另一个输入是0,2,1,3

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

2 个答案:

答案 0 :(得分:1)

使用ksort()函数按键对数组进行排序。

答案 1 :(得分:0)

对于您的问题,请使用ksort()作为manual

  

ksort(arrivalTime []);

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

按键对数组进行排序,保持数据关联的关键。

$test = array(0,2,1,3);
arsort($test);
echo "<pre>";
print_r($test);
echo "</pre>";

$test = array(0,0,0,1);
ksort($test);
echo "<pre>";
print_r($test);
echo "</pre>";

if($test == array(0,0,0,1)){
    ksort($test);
} else{
    asort($test);
}
echo "<pre>";
print_r($test);
echo "</pre>";