我有一个像:
这样的数组$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 )
查看输出数组,更改键,点(。)替换为 _ 。
为什么会这样?
答案 0 :(得分:1)
请查看variables.external documentation
变量名中的点和空格将转换为下划线。例如,
<input name="a.b" />
变为$ _REQUEST [&#34; a_b&#34;]。
您可以使用file_get_contents(&#39; php:// input&#39;)来克服这个问题。如果你无法避免通过GET或POST传递的变量名中的点,那么自己阅读和解析输入。