« 30. 如何撰寫 for 敘述? | (回到Blog入口) | 32. break 敘述的用法? »

31. foreach 敘述的用法?

jollen 發表於 October 27, 2006 3:01 PM

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

版權聲明

請參閱頁面底部的 CC 授權條款。此外,Jollen's PHP 專欄禁止引用、修改與轉貼,如果您想與朋友分享的話,我們只允許網站連結(hyperlink)的形式。

發表一個評論

(如果你此前從未在此 Blog 上發表過評論,則你的評論必須在 Blog 主人驗證後才能顯示,請你耐心等候。)

| Top | Jollen's Forum |
Jollen's PHP 專欄採用 Attribution-NonCommercial-NoDerivs 2.5 授權條款
Copyright(c) 2001-2007,2010 www.jollen.org