2013-08-21 3 views
1

문제가 발생했습니다. 주위에 머리를 갖다 붙일 수 없습니다. 나는 뭔가를 놓치고 있어야하지만, 나는 무엇을 알게 될 수 없다. for 루프 내 foreach-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)

답변

3

코드는 다음과 같이 사용하기 좀 더 쉽게 될 수 있습니다. 해당 데이터를 제공하는 foreach() 루프에 이미있을 때 nextkey 연산을 사용할 필요가 없습니다. foreach 루프는 이미 배열의 각 요소를 반복하므로 next()을 수동으로 호출하면 PHP가 SKIP 다른 모든 요소에 간단하게 생깁니다.

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

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

을 에코 것이다