foreach

foreach

循環語句
foreach語句為數組或對象集合中的每個元素重複一個嵌入語句組。foreach語句用于循環訪問集合以獲取所需信息,但不應用于更改集合内容以避免産生不可預知的副作用。能夠應用的編程語言類别:Java、C#、PHP、D語言(Phobos庫)。foreach語句是c#中新增的循環語句,他對于處理數組及集合等數據類型特别方便。foreach語句的一般語法格式如下:foreach(數據類型标識符in表達式){循環體}。
    中文名:遍曆數組或循環中的字符 外文名:foreach 定義:循環語句 應用範圍:Java、C# 、PHP 語句類型:叠代

語句形式

此語句的形式如下:

foreach (type identifier in expression) statement

其中:

type

identifier的類型。

identifier

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

expression

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

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

statement

要執行的嵌入語句。

語句語法

java

格式:

C#:foreach(元素類型type元素變量x:遍曆對象obj)

{

引用了x的java語句;

}

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

}

實例:

public class Test{

public static void main(String[] args)

{

int[] a={1,2,3};

for (inti:a)

System.out.print(i+",");

}

}

C#

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

foreach(int i in arr)

{

System.Console.WriteLine(i);

}

輸出結果為:

1

2

3

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

如果當前方法中在訪問當前引用類型的集合,在新調用的方法中在修改當前集合的地址時,當前地址會依然存在,不符合C#中的對象的生命周期,一當前文件的引用地址被替換掉了,當前對象的空間就消失廢棄了,但是,foreach(){}會保留原先的集合的地址<地址應該也是有生命周期的>foreach和for就不一樣!

c#中:foreach舉例

using System;

class Number

{

static void Main()

{

int evenNum=0,oddNum=0;

//定義并初始化一個一維數組

int[] arr=new int[]{13,16,15,78,26,65,39};

foreach(int k in arr)//提取數組中的整數

{

if(k%2==0)//判斷是否為偶數

evenNum++;

else

oddNum++;

}

Console.WriteLine("偶數個數:{0}奇數個數:{1}",evenNum,oddNum);

Console.ReadKey();

}

}

php

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

foreach(array_expressionas$value)statement

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

foreach(array_expressionas$key=>$value)statement

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

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

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

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

$arr=array(1,2,3,4);

foreach($arr as &$value)

{

$value=$value*2;

}

//$arr is now array(2,4,6,8)

?>

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

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

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

/n";}foreach($arr as $value){echo"Value:$value

/n";}?>

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

/n";}foreach($arras$key=>$value){echo"Key:$key;Value:$value

/n";}?>

示範用法的更多例子:

$v./n";$i++;}/*foreachexample3:keyandvalue*/$a=array("one"=>1,"two"=>2,"three"=>3,"seventeen"=>17);foreach($aas$k=>$v){echo"/$a[$k]=>$v./n";}/*foreachexample4:multi-dimensionalarrays*/$a=array();$a="a";$a="b";$a="y";$a="z";foreach($aas$v1){foreach($v1as$v2){echo"$v2/n";}}/*foreachexample5:dynamicarrays*/foreach(array(1,2,3,4,5)as$v){echo"$v/n";}?>

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

例子1

foreach($arr as $v)

{

echo$v."";

}

例子2

foreach($arr as $k=>$v)

{

echo"[$k]=>$v

";

}

D語言

foreach叠代語句

用法1

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

import std.stdio;

void main()

{

foreach(ival;2..5)

{

writeln(ival);

}

}//結果依次輸出234

用法2

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

import std.stdio;

void main()

{

int arr;

int num=0;

foreach(ival;arr)

{

arr[num]=++num;

writeln(ival);

}

}//輸出012

用法3

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

import std.stdio;

void main()

{

int[] arr=new int[5];

foreach(index,ref ival;arr)//index是數組下标索引ival是對應的索引值默認都為0arr是數組名

{

ival=index+1;

writeln(arr[index]);

}

}//輸出12345

相關詞條

相關搜索

其它詞條