表单提交后不支持点(。)作为数组键字符

时间:2016-06-06 07:50:30

标签: php arrays array-key

我有一个像:

这样的数组
$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 )

查看输出数组,更改键,点(。)替换为 _

为什么会这样?

1 个答案:

答案 0 :(得分:1)

请查看variables.external documentation

  

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

您可以使用file_get_contents(&#39; php:// input&#39;)来克服这个问题。如果你无法避免通过GET或POST传递的变量名中的点,那么自己阅读和解析输入。