當(dāng)前位置:博客首頁>>編程基礎(chǔ) >> 閱讀正文

對于foreach循環(huán)的一點小認(rèn)識

作者: 鄭曉 分類: 編程基礎(chǔ) 發(fā)布于: 2012-08-28 18:15 瀏覽:4,475 沒有評論


首先來看一段代碼:

$arr = array("a","b","c","d");
foreach($arr as $val) {
echo $val.' ';
$arr = array("a1","b1","c1","d1");
foreach($arr as $val) {
echo $val.' ';
}
}

這段代碼會輸出什么呢?
或者來個簡單的:

$arr = array("a","b","c","d");
foreach($arr as $val) {
echo $val.' ';
$arr = array();
}

第一段代碼會輸出”a a1 b1 c1 d1 b a1 b1 c1 d1 c a1 b1 c1 d1 d a1 b1 c1 d1 “,第二段則會輸出”a b c d”。
為什么會這樣呢?當(dāng)時和同事第一次看這段代碼時 都以為會輸出”a a1 b1 c1 d1 a1 a1 b1 c1 d1…”,但結(jié)果確不對,其實想想也是,如果是我們想的那種循環(huán)的話,估計這也算是死循環(huán)了吧。。
查了相關(guān)資料后才明白,foreach循環(huán)的數(shù)組其實是源數(shù)組的一個拷貝,也就是說foreach在第一次循環(huán)開始時便把源數(shù)組拷貝了一份,之后在循環(huán)體中對源數(shù)組進(jìn)行修改時并不會對foreach產(chǎn)生改變。
由此想到,在平時程序編寫過程中,為了減少變量使用和代碼簡潔的目的,在foreach結(jié)束后不會再使用到源數(shù)組的前提下,可以考慮foreach判定體內(nèi)提取出的數(shù)組單項命名為與源數(shù)組同名。
也就是像這樣:

$array = array(1,2,3,4,5,6,7);
foreach ($array as $array){
echo $array;
}

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。

本文永久鏈接: http://www.yjfs.org.cn/for-little-understanding-of-the-foreach-loop.html

發(fā)表評論

change vcode