foreach

foreach

foreach 語句為數組或對象集合中的每個元素重複一個嵌入語句組。foreach 語句用於循環訪問集合以獲取所需信息,但不套用於更改集合內容以避免產生不可預知的副作用。 能夠套用的程式語言類別:Java、C# 、PHP、D語言(Phobos庫)。 foreach語句是c#中新增的循環語句,他對於處理數組及集合等數據類型特別方便。 foreach語句的一般語法格式如下: foreach(數據類型 標識符 in 表達式) 循環體2 。

基本信息

形式

此語句的形式如下:

foreach (type identifier in expression) statement

其中:

type

identifier 的類型。

identifier

表示集合元素的疊代變數。如果疊代變數為值類型,則無法修改的唯讀變數也是有效的。

expression

對象集合或數組表達式。集合元素的類型必須可以轉換為 identifier 類型。請不要使用計算為 null 的表達式。

而應計算為實現 IEnumerable 的類型或聲明 GetEnumerator 方法的類型。在後一種情況中,GetEnumerator 應該要么返回實現 IEnumerator 的類型,要么聲明 IEnumerator 中定義的所有方法。

statement

要執行的嵌入語句。

事例:

語法

java

格式:

foreach(元素類型type 元素變數x : 遍歷對象obj)

{

引用了x的java語句;

}

在java中的語法:for(type x : collection){

}//在collection中遍歷每一個對象,對象是type類型的x

實例:

C#

int[] arr={1,2,3}; //遍歷數組 當前只是訪問集合中的元素

輸出結果為:

1

2

3

C#中:foreach 針對引用類型地址的訪問

如果當前方法中在訪問當前引用類型的集合,在新調用的 方法中在修改當前集合的地址時,當前地址會依然存在,不符合C#中的對象的生命周期,一旦當前檔案的引用地址被替換掉了,當前對象的空間就消失廢棄了,但是,foreach(){

}會保留原先的集合的地址<地址應該也是有生命周期的>foreach 和for 就不一樣!

c#中:foreach舉例

foreach foreach

php

php 4 引入了 foreach 結構,和 Perl 以及其他語言很像。這只是一種遍歷數組簡便方法。foreach 僅能用於數組,當試圖將其用於其它數據類型或者一個未初始化的變數時會產生錯誤。有兩種語法,第二種比較次要但卻是第一種的有用的擴展。

foreach (array_expression as $value) statement

第一種格式遍歷給定的 array_expression 數組。每次循環中,當前單元的值被賦給 $value 並且數組內部的指針向前移一步(因此下一次循環中將會得到下一個單元)。

foreach (array_expression as $key => $value) statement

第二種格式做同樣的事,只除了當前單元的鍵名也會在每次循環中被賦給變數 $key。

自php 5 起,還可能遍歷對象。 注: 當 foreach 開始執行時,數組內部的指針會自動指向第一個單元。這意味著不需要在 foreach 循環之前調用 reset()

注: 除非數組是被引用,foreach 所操作的是指定數組的一個拷貝,而不是該數組本身。因此數組指針不會被 each() 結構改變,對返回的數組單元的修改也不會影響原數組。不過原數組的內部指針 的確在處理數組的過程中向前移動了。假定 foreach 循環運行到結束,原數組的內部指針將指向數組的結尾。

自 php 5 起,可以很容易地通過在 $value 之前加上 & 來修改數組的單元。此方法將以引用賦值而不是拷貝一個值。

此方法僅在被遍歷的數組可以被引用時才可用(例如是個變數)。

注: foreach 不支持用“@”來抑制錯誤信息的能力。

用戶可能注意到了以下的代碼功能完全相同:

<?php$arr = array("one", "two", "three");reset($arr);while (list(, $value) = each($arr)) { echo "Value: $value<br>/n";}foreach ($arr as $value) { echo "Value: $value<br />/n";}?>

以下代碼功能也完全相同:

<?php$arr = array("one", "two", "three");reset($arr);while (list($key, $value) = each($arr)) { echo "Key: $key; Value: $value<br />/n";}foreach ($arr as $key => $value) { echo "Key: $key; Value: $value<br />/n";}?>

示範用法的更多例子:

<?php/* foreach example 1: value only */$a = array(1, 2, 3, 17);foreach ($a as $v) { echo "Current value of /$a: $v./n";}/* foreach example 2: value (with key printed for illustration) */$a = array(1, 2, 3, 17);$i = 0; /* for illustrative purposes only */foreach ($a as $v) { echo "/$a[$i] => $v./n"; $i++;}/* foreach example 3: key and value */$a = array( "one" => 1, "two" => 2, "three" => 3, "seventeen" => 17);foreach ($a as $k => $v) { echo "/$a[$k] => $v./n";}/* foreach example 4: multi-dimensional arrays */$a = array();$a[0][0] = "a";$a[0][1] = "b";$a[1][0] = "y";$a[1][1] = "z";foreach ($a as $v1) { foreach ($v1 as $v2) { echo "$v2/n"; }}/* foreach example 5: dynamic arrays */foreach (array(1, 2, 3, 4, 5) as $v) { echo "$v/n";}?>

$arr=array(1,2,3,4,'a','b',"c");

1.

2.

D語言

foreach 疊代語句

用法1 foreach(int ival;A .. B){} 定義一個整形變數 ival之後依次把ival變成A至 B - 1 (右開區間)

用法2 foreach(int ival;arr){} arr是數組這個循環將數組中的每一個元素依次綁定到ival中

用法3 foreach(int index,ref ival;arr){}第一個變數表示數組arr的索引 ival表示數組下標為index對應的值 加了ref關鍵字表示ival與數組的值相關聯(ival改變 數組值也相應改變...類似於C++的引用)

相關詞條

相關搜尋

熱門詞條

聯絡我們