Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在HTML表单中使用多维数组的优点是什么?_Php_Arrays_Html_Forms - Fatal编程技术网

Php 在HTML表单中使用多维数组的优点是什么?

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=

关于下面的代码:使用data[Category][county][Macon]数组而不是仅仅使用名称'county'或county[],以及值'Macon'有什么好处?当每个复选框共享相同的值1时,它们如何处理服务器端的表单数据?另外,为什么每个复选框都有一个同名但值为0的隐藏输入

任何有助于实现这一目标的帮助都将不胜感激

<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
    而不是name
    value=“Macon”“
    。这取决于您以后想用它做什么,以及您是如何设计数据库的。

    唯一的优势是复杂性,也就是说,我不会仅仅为了复杂性而这样做。谢谢,是的,我同意这是一种更简单的方法。我只是好奇用另一种方式做是否有好处,但似乎只有当你有一个行星大小的大脑时才有好处。我可能无法跟踪如此复杂的数组,而且当我在6个月后回来进行修改时肯定无法跟踪。谢谢…我没有意识到如果未选中复选框值,则不会发送复选框值,但这是有意义的,从未真正考虑过它…因此解释了隐藏字段。我认为它可能也是CakePHP或类似的框架,因为我不认为它是一种个人通常使用的方法。我想这样做没有任何好处…只是不同而已。
    foreach( $_POST['counties'] as $county ) {
        // $county will = 'Macon' on first iteration
        // $county will = 'Madison' on second iteration
    }