foreach 敘述是由 PHP 4 開始所新增的語法,foreach 可以很方便地用來索引陣列資料結構裡的元素。其語法如下:
1.
foreach(array_expression as $value) statement
2.
foreach(array_expression as $key => $value) statement
第 1 種語法會對陣列 array_expression 做迴圈,並將目前所指元素的值放到 $value 變數裡,然後陣列裡的指標會跟著移到下一個元素的位置。
第 2 種語法則是和第一種語法相同,差別再於這種語法還會將元素的 key 放到 $key 變數裡。
使用 foreach 敘述時,PHP 會自動在迴圈一開始時將陣列的內部指標移到第一個元素的位置,因此不需要呼叫 reset() 函數。另外,foreach 在對陣列做迴圈時,會額外複制一份陣列再做迴圈的動作,這表示 foreach 敘述不會改變原來陣列內部指標的位置。
底下是一個利用 while 迴圈索引陣列元素的寫法,這也是以往常用的寫法:
<?php reset ($arr); while (list($key, $value) = each ($arr)) { echo "Value: $value
\n"; } ?>
將 while 敘述改用 foreach 後,新的寫法如下:
<?php foreach ($arr as $value) { echo "Value: $value
\n"; } ?>
假如我們還想要列印出陣列的 key,則可以改用第 2 種語法如下:
<?php foreach ($arr as $key => $value) { echo "Array: $key, $value
\n"; } ?>
對於二維以上陣列的處理方式,可以使用巢狀式的 foreach 寫法。請看底下的範例:
<?php $arr[0][0] = "aaa"; $arr[0][1] = "bbb"; $arr[1][0] = "ccc"; $arr[1][1] = "ddd";
foreach($arr as $v1) { foreach ($v1 as $v2) { echo "$v2 "; } } ?>
--jollen