2013-08-21 3 views
1

Я столкнулся с проблемой, с которой я не могу опустить голову. Мне что-то не хватает, но я не могу понять, что.Странное поведение в foreach-loop внутри 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)

ответ

3

Ваш код может быть немного проще в использовании, как это. Нет смысла использовать операции next и key, когда вы уже находитесь в цикле foreach(), который предоставляет эти данные для вас. Поскольку цикл foreach уже выполняет итерацию по каждому элементу массива, вызов next() вручную просто вызывает 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... 
Смежные вопросы