我有問題,在同一陣列上兩次迭代:嵌套的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