繁体   English   中英

for循环中foreach循环中的奇怪行为

[英]Strange behaviour in foreach-loop inside for-loop

我遇到了一个问题,我无法理解它。 我必须遗漏一些东西,但我无法知道什么。

这是我的代码:

<input type="text"      name="guest[1][name]"       id="nameG1" /><label for="nameG1"> Namn </label><br />
<input type="checkbox"  name="guest[1][veg]"        value="Ja" />Vegetarian (vegan etc. fyll i nedan)<br />
<textarea               name="guest[1][allergies]"  id="allergiesG1"></textarea><label for="allergiesG1">Allergier och andra matpreferenser</label><br />
<input type="radio"     name="guest[1][drink]"      value="Öl" />Öl<br />
<input type="radio"     name="guest[1][drink]"      value="Cider" />Cider<br />
<input type="checkbox"  name="guest[1][alcfree]"    value="Ja" />Alkoholfritt<br />

<input type="text"      name="guest[2][name]"       id="nameG2" /><label for="nameG2"> Namn </label><br />
<input type="checkbox"  name="guest[2][veg]"        value="Ja" />Vegetarian (vegan etc. fyll i nedan)<br />
<textarea               name="guest[2][allergies]"  id="allergiesG2"></textarea><label for="allergiesG2">Allergier och andra matpreferenser</label><br />
<input type="radio"     name="guest[2][drink]"      value="Öl" />Öl<br />
<input type="radio"     name="guest[2][drink]"      value="Cider" />Cider<br />
<input type="checkbox"  name="guest[2][alcfree]"    value="Ja" />Alkoholfritt<br />

<input type="text"      name="guest[3][name]"       id="nameG3" /><label for="nameG3"> Namn </label><br />
<input type="checkbox"  name="guest[3][veg]"        value="Ja" />Vegetarian (vegan etc. fyll i nedan)<br />
<textarea               name="guest[3][allergies]"  id="allergiesG3"></textarea><label for="allergiesG3">Allergier och andra matpreferenser</label><br />
<input type="radio"     name="guest[3][drink]"      value="Öl" />Öl<br />
<input type="radio"     name="guest[3][drink]"      value="Cider" />Cider<br />
<input type="checkbox"  name="guest[3][alcfree]"    value="Ja" />Alkoholfritt<br />

通过邮件发送到此页面:

for ($j=1; $j<4; $j++) {
    var_dump($_POST['guest'][$j]);

    foreach ($_POST['guest'][$j] as $guest) {                   
        echo key($_POST['guest'][$j]).": ".$guest."<br>";
        next($_POST['guest'][$j]);
    }

    echo "<br>";
}

我的问题是php代码的输出在for循环的第一个循环中搞砸了。 正如你在下面的图片中看到的那样,第一个循环搞砸了,但另外两个循环很好。 请帮忙,我不知道有什么不对!

我还可以说我已经注释掉了这两个文件中的所有其他代码,以找出这个部分的错误,所以应该没有其他任何影响这个。

http://i44.tinypic.com/2a0gehl.jpg

您的代码可能更容易使用这样。 当你已经在为你提供数据的foreach()循环中时,使用nextkey操作是没有意义的。 由于foreach循环已遍历数组中的每个元素,因此手动调用next()只会导致PHP 跳过其他每个元素。

foreach($_POST['guest'] as $idx => $guest) {
   foreach($guest as $key => $val) {
       echo "$idx: $key => $val<br>";
   }
}

这会回应

1: name => foo
1: veg => ...
etc...
2: name => bar
etc...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM