cdm*_*kay 3 html php forms superglobals
PHP会自动转换
<input type="text" name="foo[0]" value="x" />
<input type="text" name="foo[1]" value="y" />
Run Code Online (Sandbox Code Playgroud)
成
$_POST['foo'] = array(
0 => 'x',
1 => 'y'
);
Run Code Online (Sandbox Code Playgroud)
这是你大多数时候想要的.但是,在这种情况下,我希望不会发生这种情况.有没有告诉PHP不这样做?
我意识到我可以解析php://input自己,但如果我能避免它,我宁愿不这样做.
我也没有重命名输入名称的选项.
通过使用括号,[]您明确告诉PHP创建一个数组,只是不要使用括号:
<input type="text" name="foo_0" value="x" />
<input type="text" name="foo_1" value="y" />
Run Code Online (Sandbox Code Playgroud)
这些字段将在$ _POST数组中作为$_POST['foo_0']和提供$_POST['foo_1'].
如果你没有对标记产生影响(这很奇怪,因为你总是可以改变它们的客户端),你需要展平数组.
$post = array();
foreach ($_POST as $key => $value) {
if (!is_array($value)) {
$post[$key] = $value;
} else {
foreach ($value as $foo => $item) {
$post[$foo] = $item;
}
}
}
Run Code Online (Sandbox Code Playgroud)