反向结果

时间:2013-08-02 12:47:51

标签: php sorting

很简单但很困惑我!这是它:

$command[] = "30";
$command[] = "20";
$command[] = "10";
$command[] = "5";
$command[] = "1";

asort($command);

print_r($command);

返回:

  

数组([0] =>数组([0] => 30 [1] => 20 [2] => 10 [3] => 5 [4] => 1   ))

但我想:

  

数组([0] =>数组([0] => 1 [1] => 5 [2] => 10 [3] => 20 [4] => 30   ))

我使用的确切代码:

$cmd_id = array();

foreach ($_POST as $k => $v)
{
    if($k=='cmd_id' && $v>0)
        $cmd_id[] = $v;
}

表单是多个复选框:

<input type="checkbox" name="cmd_id[]" .........

3 个答案:

答案 0 :(得分:3)

您的价值似乎是一系列价值观。我假设在您的HTML中,表单中有name="cmd_id[]"之类的内容。因此,HTTP POST变量cmd_id将以数组形式到达PHP。

$cmd_id = array();

foreach ($_POST['cmd_id'] as $value) {
    if($value > 0) {
        $cmd_id[] = $value;
    }
}

sort($cmd_id, SORT_NATURAL);

print_r($cmd_id);

答案 1 :(得分:2)

Original anwer:使用arsort

-

更新:asort用于维护索引,你想要的是正常的sort()。另外,请参阅php手册中的Sorting Arrays

-

更新2: 问题在于如何填充阵列。而是这样做:

if (!empty($_POST['cmd_id'])) {
    foreach ($_POST['cmd_id') {
        $cmd_id[] = intval($v); # Preferably force ints if you expect ints
    }
} else { /* Handle use input failure accordingly */ }

答案 2 :(得分:2)

您可以使用arsort - 只需反转asort

的版本