我遇到了一个我无法理解的问题。我一定错过了什么,但我无法知道是什么。
这是我的代码:
<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()循环中为您提供数据时,使用next
和key
操作是没有意义的。由于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...