起步 - 表单提交数组 ¶
作者:KK
发表日期:2016.5.19
有时候我们企图PHP接收一个数组,比如说提交多个ID上来,PHP希望得到的形态就是这样的:
$_POST = [
'ids' => [221, 124, 3861, 132, 544],
];
这样的话表单一般是这样写的:
<input type="text" name="ids[]">
<input type="text" name="ids[]">
<input type="text" name="ids[]">
...
其实跟控件类型无关,关键是name那里ids[]
这个名字要加方括号[]
,每个input输入的值都会成为数组的一个元素,上面三个input就会构成3个元素
接下来试试 ¶
<form action="/test.php" method="post>
<input type="text" name="ids[]" value="默认值1"><br/>
<input type="text" name="ids[]" value="默认值2"><br/>
<input type="text" name="ids[]" value="默认值3"><br/>
<button type="submit">提交</button>
</form>
如果不作任何修改就提交,那得到的数组自然就是
$_POST = [
'ids' => ['默认值1', '默认值2', '默认值3'],
];
checkbox/radio等也是一样的 ¶
<form action="/test.php" method="post>
要啥菜:<br/>
白菜<input type="checkbox" name="ids[]" value="baicai"><br/>
黑菜<input type="checkbox" name="ids[]" value="heicai"><br/>
红菜<input type="checkbox" name="ids[]" value="hongcai"><br/>
<button type="submit">提交</button>
</form>
那如果你有兴趣的话就换成radio和select这些试试吧,其实重点在于name的起名
提交关联数组 ¶
如果想PHP构造这样的关联数组:
$_POST = [
'user' => [
'name' => '小明',
'age' => 18,
],
];
首先表单至少需要包含name="user"
才能构成 $_POST['user'] ,接下来要 $_POST['user']['name'] 为"小明"的话,则只要写成name="user[name]"
就可以了,那么age也是一样的道理,下面给出表单样本代码:
<form action="/test.php" method="post>
姓名:<input type="text" name="user[name]" value="默认姓名"><br/>
年龄:
<select name="user[age]">
<option>1岁</option>
<option>2岁</option>
<option>3岁</option>
<option>4岁</option>
<option>5岁</option>
<option>6岁</option>
<option>7岁</option>
<option>8岁</option>
<option>9岁</option>
<option>10岁</option>
<option>11岁</option>
<option>12岁</option>
<option>13岁</option>
<option>14岁</option>
<option>15岁</option>
<option>16岁</option>
<select></br>
<button type="submit">提交</button>
</form>
那么更多的,$_POST['user']['ids']
想要是一个ID集合的话就是
user[ids][]
这样了,而如果要$_POST['user']['children']['name']
那表单name就是user[children][name]
,依此类推