2013-08-21 84 views
1

我遇到了一个问题,我无法绕开它。我一定错过了一些东西,但我不知道是什么。For循环中的foreach循环中的奇怪行为

这是我的代码:

<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

回答

3

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

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...