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

于 2015-06-25T06:33:44.460 に答える
2

元の回答: arsort を使用します

--

更新: asort はインデックスを維持するためのものです。必要なのは通常のソート() です。また、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 */ }
于 2013-08-02T12:49:26.263 に答える