【问题标题】:cant understand what is happening in a section of FOREACH loop PHP无法理解 FOREACH 循环 PHP 的一部分中发生了什么
【发布时间】:2015-04-01 01:53:54
【问题描述】:

所以我最近使用了一些代码,我想知道它是如何工作的,因为我不喜欢使用我不理解的东西,而且我从哪里得到的代码并没有显示它是如何工作的。它的作用是将所有选中的复选框附加到变量 $information。

这是我使用的代码,提交的表单和php脚本

<form name="checkboxform" action="" method="post">
 <input type="checkbox" name="ninjas[]" value="stuff">stuff<br>
 <input type="checkbox" name="ninjas[]" value="more stuff">more stuff<br>
<input type="submit" value="submit" name="submit">
</form>

所以当我点击提交时,这个函数就会运行

//excuse the ninja naming part, needed to have a laugh cause this was so frustrating :)
function sneakyNinjas() {
$array = $_POST['ninjas'];
$information = "";
foreach ($array as $key => $value) {
    $information .= $value; 
}

所以我知道它会遍历数组中的每个值,这就是我将它们命名为这样的原因。
但是 $keys =>$value 部分是我不这样做的不明白。

它如何确定复选框何时被单击?
它是否使用与数组一起发送的布尔值?

非常感谢任何有助于理解该过程的帮助或链接,以便我可以阅读它,因为到目前为止我还没有发现任何内容,并且一定要纠正我所说的任何错误。

【问题讨论】:

  • $_POST 是一个关联数组。我应该只给你关键是'ninjas'的值。
  • 提示:你可以使用foreach ($_POST['ninjas'] as $value){ ...;您不使用 $key 并且不需要创建新变量 $array
  • 甜,这是我的下一个问题。谢谢你:)

标签: php


【解决方案1】:

提交 HTML 表单时,仅提交已选中复选框的值。未选中或禁用的复选框被省略,因此您的数组仅包含选中的值。

【讨论】:

    【解决方案2】:

    我相信在提交表单时只会传递选中的复选框。在您的循环中, $key 是传递的字段名称, $value 是它的值(与您的 HTML 中的属性匹配)。未选中的字段根本不应该存在(如果我没记错的话)。

    【讨论】:

    • 如果他正在循环 $_POST 数组,那将是正确的,但由于他正在循环 $_POST['ninjas'],所以 $key 将是数组的数字索引 - 在这种情况下并不太有用跨度>
    【解决方案3】:

    $_POST 是一个关联数组。它应该只给你关键是'ninjas'的值。

    【讨论】:

    • If "ninjas" is your check box, it will have a true or false value. - 不正确:如果您选中该框,它将具有您指定的值,或者默认为“on”,否则它根本不存在于 post 数组中
    • 很高兴知道。我试使用 empty() 太多。 ;)
    猜你喜欢
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 2019-06-05
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多