【问题标题】:Strange behaviour in foreach-loop inside for-loopfor-loop 内的 foreach-loop 中的奇怪行为
【发布时间】:2013-08-21 21:50:13
【问题描述】:

我遇到了一个我无法理解的问题。我一定是错过了什么,但我不知道是什么。

这是我的代码:

<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 循环的第一个循环中被弄乱了。如下图所示,第一个循环搞砸了,但其他两个循环很好。请帮忙,我不知道出了什么问题!

我也可以说我已经注释掉了两个文件中的所有其他 vit 代码,以找出这部分的问题,所以应该没有其他影响。

(http://i44.tinypic.com/2a0gehl.jpg)

【问题讨论】:

    标签: php post for-loop foreach key


    【解决方案1】:

    您的代码可能会更容易像这样使用。当您已经处于为您提供数据的 foreach() 循环中时,使用 nextkey 操作毫无意义。由于 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...
    

    【讨论】:

      猜你喜欢
      • 2019-10-03
      • 1970-01-01
      • 2013-08-05
      • 2012-02-02
      • 2018-06-06
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多