2013-08-21 218 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...