0

很简单但让我很困惑!就这个:

$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[]" .........
4

3 回答 3

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);
于 2013-08-02T12:56:59.267 回答
2

原始答案:使用arsort

--

更新:asort 用于维护索引,您想要的是正常的sort ()。另外,请参阅php 手册中的排序数组

--

更新 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 */ }
于 2013-08-02T12:49:26.263 回答
2

您可以使用arsort- 只是反向版本asort

于 2015-06-25T06:33:44.460 回答