起步 - 表单提交数组

  • 作者: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],依此类推