我有问题,在同一阵列上两次迭代:嵌套的foreach
<? $indice=0 ?>
<?php foreach ($comisiones as $comision1):?>
<tr>
<td><?php echo ++$indice ?></td>
<td><?php echo tag('select',array('name'=>'comision_'.$indice),true)?>
<?php foreach ($comisiones as $comision2):?>
<option value="<?php echo $comision2->getId()?>">
<?php echo $comision2->getNombre()." - ".$comision2->getDescripcion()?>
</option>
<?php endforeach?>
</select>
</td>
</tr>
<?php endforeach?>
上面的代码打印:
code result http://img440.imageshack.us/img440/7732/res.png
而且我希望看到的东西像这样(图像中组合标签不一样,但我认为这个想法很清楚):
expected results http://img229.imageshack.us/img229/7969/esperado.png
在此先感谢
感谢理查德,我用一个正常的替换了第一个foreach,它工作。我不能相信PHP在这样一个简单的结构中有这么大的BUG ...... – Neuquino 2010-03-28 14:43:28
这不是一个错误,它记录在php.net/foreach上:注意:除非数组被引用,否则foreach在副本上运行指定数组,而不是数组本身。 foreach对数组指针有一些副作用。不要在foreach期间或之后依赖数组指针而不重置它。 – 2010-03-28 14:48:07
是否有记录,这是一个BUG。这种行为不直观,没有人会期望这段代码的结果。 PHP应该为每个foreach结构使用不同的指针。 – Neuquino 2010-03-28 15:04:55