2015-04-01 44 views
2

所以我最近使用了一些代码,我想知道它是如何工作的,因为我不喜欢使用我不明白的东西和我在哪里得到的东西代码没有显示它是如何工作的。它所做的是将所有选中的复选框附加到变量$信息。不能理解FOREACH循环中发生了什么PHP

这里是我使用的代码,提交的表单和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部分是我不明白的。

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

任何帮助理解过程将不胜感激或链接,所以我可以读它,因为我到目前为止没有发现任何东西,并通过一切手段纠正我,我错了我说的任何东西。

+0

$ _POST是一个关联数组。我只应该给你价值的关键是'忍者'。 – lciamp 2015-04-01 01:59:10

+0

提示:你可以使用'foreach($ _POST ['ninjas']作为$ value){'...;你不使用$键,你不需要创建一个新变量$ array – 2015-04-01 02:00:18

+0

甜,这是我的下一个问题。谢谢:) – user3634933 2015-04-01 02:00:54

回答

2

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

+0

谢谢,现在有道理:) – user3634933 2015-04-01 02:01:05

0

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

+0

'如果“ninjas”是你的复选框,它将会有一个真值或假值。“ - 不正确:如果你勾选了这个复选框,它会有你指定的值,或默认为“开启”,否则它根本不会存在于帖子数组 – 2015-04-01 02:01:42

+0

有用的信息。我概率。使用空()太多。 ;) – lciamp 2015-04-01 02:04:24

0

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

+0

如果他正在循环'$ _POST'数组,那么会是真的,但是因为他正在循环$ _POST ['ninjas']''$ key'将是数组的数字索引 - 在这里不太有用情况 – 2015-04-01 02:11:04