在開發工作中遇到這樣一種情形,需要在循環體中動態向遍歷中的數組添加元素並在當前循環遍歷中使用數組的全部元素。
首先使用foreach循環來遍歷數組,將代碼簡化抽象如下:
$arr = array(1, 2, 3, 4, 5, 6, 7, 8);
foreach($arr as $v) {
if($v % 2 == 0) $arr[] = 11;
echo $v . ' ';
}
結果只打印出數組原來已有元素,在循環體中動態添加的元素並沒有打印出來。
后來改用for循環,coding如下:
$arr = array(1, 2, 3, 4, 5, 6, 7, 8);
$count = count($arr);
for($i=0;$i<$count;$i++) {
if($arr[$i] % 2 == 0) {
$arr[] = 11;
$count ++;
}
echo $arr[$i] . ' ';
}
這一次將數組原有的元素和動態添加的元素都打印出來了。
后來在網上查資料,發現foreach循環中如果在變量前加引用符號&,也可以將數組的所有元素打印出來,coding如下:
$arr = array(1, 2, 3, 4, 5, 6, 7, 8);
foreach($arr as &$v) {
if($v % 2 == 0) $arr[] = 11;
echo $v . ' ';
}