Php 在HTML表单中使用多维数组的优点是什么?
关于下面的代码:使用data[Category][county][Macon]数组而不是仅仅使用名称'county'或county[],以及值'Macon'有什么好处?当每个复选框共享相同的值1时,它们如何处理服务器端的表单数据?另外,为什么每个复选框都有一个同名但值为0的隐藏输入 任何有助于实现这一目标的帮助都将不胜感激Php 在HTML表单中使用多维数组的优点是什么?,php,arrays,html,forms,Php,Arrays,Html,Forms,关于下面的代码:使用data[Category][county][Macon]数组而不是仅仅使用名称'county'或county[],以及值'Macon'有什么好处?当每个复选框共享相同的值1时,它们如何处理服务器端的表单数据?另外,为什么每个复选框都有一个同名但值为0的隐藏输入 任何有助于实现这一目标的帮助都将不胜感激 <li> <div class="input checkbox"> <input type="hidden" name=
<li>
<div class="input checkbox">
<input type="hidden" name="data[Category][county][Macon]" id="CategoryCountyMacon_" value="0" />
<input type="checkbox" name="data[Category][county][Macon]" value="1" id="CategoryCountyMacon" />
<label for="CategoryCountyMacon">Macon</label>
</div>
</li>
<li>
<div class="input checkbox">
<input type="hidden" name="data[Category][county][Madison]" id="CategoryCountyMadison_" value="0" />
<input type="checkbox" name="data[Category][county][Madison]" value="1" id="CategoryCountyMadison" />
<label for="CategoryCountyMadison">Madison</label>
</div>
</li>
梅肯
麦迪逊
实际上,它在某些框架中非常常见。假设Category
是表或模型,country
是列,Madison
是列的数据,或者是另一个查找表中的相关数据。看起来有点像CakePHP
假设您有一个表单,用户可以在其中更新具有多个相关表的内容。如何智能地、可重复地定义哪些数据绑定到哪些表等。。。该框架在接收代码中具有逻辑,该代码将查找第一级键作为表/模型,然后查找列和值
此外,复选框只有在选中时才会提交,因此如果不选中,它们将不在
$\u POST
数组中。在复选框之前定义具有相同名称和值0的隐藏输入可确保存在值,如果未选中,则为0;如果选中,则为1。这是一种获取提交的值并使用它们的方法,而不是检查是否存在某些内容,然后做一件事或另一件事。我认为这可能有点过于复杂了
我假设您正在向用户显示一组县,他们会勾选他们感兴趣的县
现在要记住的第一件事是,复选框只有在被选中的情况下才会被发送回脚本,如果它不是,那么您永远不会在脚本中看到它。另外,发送回脚本的是value=“something”
因此,如果您只是对选择的县感兴趣,那么这将更容易理解,并在脚本中进行处理。我也不确定隐藏字段的作用是什么,我猜没有
<li>
<div class="input checkbox">
<input type="checkbox" name="counties[]" value="Macon" id="CategoryCountyMacon" />
<label for="CategoryCountyMacon">Macon</label>
</div>
</li>
<li>
<div class="input checkbox">
<input type="checkbox" name="counties[]" value="Madison" id="CategoryCountyMadison" />
<label for="CategoryCountyMadison">Madison</label>
</div>
</li>
因此,您可以使用
foreach( $_POST['counties'] as $county ) {
// $county will = 'Macon' on first iteration
// $county will = 'Madison' on second iteration
}
当然,最好还是将数据库中countries行的唯一键放入value属性,即
value=“99
而不是namevalue=“Macon”“
。这取决于您以后想用它做什么,以及您是如何设计数据库的。唯一的优势是复杂性,也就是说,我不会仅仅为了复杂性而这样做。谢谢,是的,我同意这是一种更简单的方法。我只是好奇用另一种方式做是否有好处,但似乎只有当你有一个行星大小的大脑时才有好处。我可能无法跟踪如此复杂的数组,而且当我在6个月后回来进行修改时肯定无法跟踪。谢谢…我没有意识到如果未选中复选框值,则不会发送复选框值,但这是有意义的,从未真正考虑过它…因此解释了隐藏字段。我认为它可能也是CakePHP或类似的框架,因为我不认为它是一种个人通常使用的方法。我想这样做没有任何好处…只是不同而已。
foreach( $_POST['counties'] as $county ) {
// $county will = 'Macon' on first iteration
// $county will = 'Madison' on second iteration
}