3

私は次のような配列を持っています:

$arr = array("a.b" => "a.b", "b.c" => "b.c");

これを印刷すると、単に表示されます

Array ( [a.b] => a.b [b.c] => b.c )

しかし、ループを使用してチェックボックスの名前と値にキーと値を使用すると、次のようになります。

<form action="" method="post">
    <ul>
    <?php
    foreach($arr as $k => $v){?>
        <li><input type="checkbox" name="<?php echo $v;?>" value="<?php echo $k;?>"><?php echo $v;?></li>
    <?php }?>
    </ul>
    <input name="sub" type="submit"/>
</form>

送信ボタンを押すと、結果は次のように表示されます。

Array ( [a_b] => a.b [b_c] => b.c [sub] => Submit )

出力配列を確認すると、キーが変更され、ドット (.) が_に置き換えられます。

なんでこうなる??

4

1 に答える 1

1

variables.external documentationをご覧ください。

変数名のドットとスペースはアンダースコアに変換されます。たとえば、<input name="a.b" />$_REQUEST["a_b"] になります。

file_get_contents('php://input'); を使用してこれを克服できます。GET または POST で使用される変数名にドットが含まれるのを避けることができない場合は、自分で入力を読み取って解析します。

于 2016-06-06T08:16:41.720 に答える