0

var_dump (または echo) を使用してすべての $_POST 配列アイテムを一覧表示しようとしましたが、null 値のアイテムは表示されません。var_dump($_POST) を使用すると null は表示されませんが、var_dump($_Post["nullitem"]) を使用すると null が表示されます。

<html>
    <head>
    </head>
    <body>
        <?php
        if  ($_POST["submit"]){
            var_dump($_POST);           
            foreach ($_POST as $key => $value) {
                echo $key."=>";
                echo $value;
                echo "     -     ";
            }
            echo "<br>";
            echo "ck_1 "; var_dump($_POST["ck_1"]);
            echo "ck_2 "; var_dump($_POST["ck_2"]);
            echo "ck_3 "; var_dump($_POST["ck_3"]);     
        }
?>
    <form action='test.php' method='post'  name='form_example' id='test'>
        <label for='ck_1'>
        <input type='checkbox' value=1 id='ck_1' name='ck_1'  />
        1 </label>
        <label for='ck_2'>
        <input type='checkbox' value=1 id='ck_2' name='ck_2'  checked='checked'   />
        2 </label>
        <label for='ck_3'>
        <input type='checkbox' value=1 id='ck_3' name='ck_3'  />
        3 </label>
        <input type='submit' name='submit' value='Submit'  />
    </form>
    </body>
</html>

ck_2 のみがチェックされるため、この例では次のように出力されます。

配列 'ck_2' => 文字列 '1' (長さ = 1) '送信' => 文字列 '送信' (長さ = 6)

ck_2=>1 - 送信=>送信 -

ck_1 null ck_2 文字列 '1' (長さ = 1) ck_3 null

foreach ループにすべての $_POST 値を含めるにはどうすればよいですか ($_POST 配列にキーや名前がいくつあるかわかりません) よろしくお願いします

ごめん。 未チェックのチェックボックスは設定されていないため、$_POST 配列のメンバーではなく、表示されませんチェックされていない隠し値が返された場合の時間:

<input type="hidden" name="cx1" value="0" />
<input type="checkbox" name="cx1" value="1" />

ありがとうミザイ

4

2 に答える 2

0

これを試して

<html>
  <head>
  </head>
  <body>
    <?php
    if  ($_POST["submit"]){
       echo "<pre>";            
       print_r(array_filter($_POST["ck_1"]));
       echo "</pre>";
    }
   ?>
  <form action='test.php' method='post'  name='form_example' id='test'>
    <label for='ck_1'>
    <input type='checkbox' value=1 id='ck_1' name='ck_1[]'  />
    1 </label>
    <label for='ck_2'>
    <input type='checkbox' value=1 id='ck_2' name='ck_2[]'  checked='checked'   />
    2 </label>
    <label for='ck_3'>
    <input type='checkbox' value=1 id='ck_3' name='ck_3[]'  />
    3 </label>
    <input type='submit' name='submit' value='Submit'  />
  </form>
 </body>
</html>
于 2013-03-15T10:41:51.393 に答える
0

foreach に $_POST 配列のすべての値を含めていると思います。チェックボックスをオンにしないと、 $_POST 配列にキーも値も含まれません。

チェックボックスには、可能な値は1つしかなく、チェックボックスを「チェックイン」した場合にのみ表示されると思います。そうでない場合、$_POST にキーが入力されません。指定されたキー名 (設定されていないチェックボックスの名前) で $_POST を直接クエリすると、NULL が表示されるのはなぜですか? キーは $_POST 配列に存在せず、何かを返すために NULL を返します。

なんらかの理由で、ユーザーにチェックインできるすべてのチェックボックスをリストする必要がある場合は、追加できます

<input type='hidden' name='cbNames[]' value='ck_1'/>
<input type='hidden' name='cbNames[]' value='ck_2'/>
<input type='hidden' name='cbNames[]' value='ck_3'/>

サイトのチェックボックスごとに、$_POST['cbNames'] 配列をリストし、それらの $_POST をクエリします。

foreach ($_POST['cbNames'] as $cbName)
    print $_POST[$cbName];
于 2013-03-15T10:43:04.597 に答える