【发布时间】:2016-04-29 05:12:20
【问题描述】:
在 php 中,如果您使用数字索引命名表单字段,它们将作为 $_POST 对象中的数组。
<form method="post" action="post.php">
<input type="text" name="question[0][name]" />
<input type="text" name="question[0][email]"/>
<input type="text" name="question[0][password]" />
<hr>
<input type="text" name="question[1][name]" />
<input type="text" name="question[1][email]"/>
<input type="text" name="question[1][password]" />
<hr>
<input type="submit" value="Add" />
<hr>
<p><?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo json_encode($_POST, JSON_NUMERIC_CHECK);
}
?></p>
</form>
输出
{"question":[{"name":"a","email":"aa","password":"aaa"},{"name":"b","email":"bb","password":"bbb"}]}
如果字段的顺序不是从零开始的顺序,并且每次重复名称时仅增加一,那么它们都被解释为键。所以
<form method="post" action="post.php">
<input type="text" name="question[1][name]" />
<input type="text" name="question[1][email]"/>
<input type="text" name="question[1][password]" />
<hr>
<input type="text" name="question[0][name]" />
<input type="text" name="question[0][email]"/>
<input type="text" name="question[0][password]" />
<hr>
<input type="submit" value="Add" />
<hr>
<p><?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo json_encode($_POST, JSON_NUMERIC_CHECK);
}
?></p>
</form>
输出
{"question":{"1":{"name":"a","email":"aa","password":"aaa"},"0":{"name":"b","email":"bb","password":"bbb"}}}
有没有办法让 $_POST 忽略 post 键数组的顺序,以便将它们解释为数组?
【问题讨论】:
-
另一种方法是get时对$_POST数组进行排序。
-
@ShivaniPatel 你的例子吗?