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 )

查看输出数组,键已更改, dot(.) 替换为_

为什么会这样??

4

1 回答 1

1

请查看variables.external 文档

变量名中的点和空格被转换为下划线。例如<input name="a.b" />变成 $_REQUEST["a_b"]。

您可以通过使用 file_get_contents('php://input'); 来克服这个问题。如果您无法避免通过 GET 或 POST 获得的变量名称中的点,然后自行读取和解析输入。

于 2016-06-06T08:16:41.720 回答