Foreach是PHP中非常常用的一個關(guān)鍵字,作用是遍歷數(shù)組中的每一個元素。使用Foreach,可以簡潔、方便地遍歷數(shù)組,大幅提高代碼效率。下面將詳細(xì)講解Foreach和它的使用方法。
我們來看一下下面的例子:
$arr = array('apple', 'banana', 'orange'); foreach($arr as $val){ echo $val; }
上面的例子中,我們創(chuàng)建了一個包含三個元素的數(shù)組,使用Foreach語句遍歷數(shù)組。將數(shù)組中的每一個元素賦值給$val變量,然后打印出$val的值??梢钥吹紽oreach很簡潔明了,實(shí)現(xiàn)了數(shù)組元素的逐個遍歷。
在Foreach中,我們可以同時獲取數(shù)組元素的key值和value值。例如:
$arr = array('apple'=>10, 'banana'=>20, 'orange'=>30); foreach($arr as $key=>$val){ echo $key . " - " . $val; }
上面的例子中,我們建立了一個關(guān)聯(lián)數(shù)組,key為不同的水果名稱,value表示每種水果對應(yīng)的價格。在Foreach中,我們使用了兩個變量:$key和$val,分別獲取了數(shù)組元素的key和value值。通過這段代碼,可以看到Foreach除了逐個輸出數(shù)組元素,還能獲取元素的鍵和值。
Foreach也可以實(shí)現(xiàn)遍歷多維數(shù)組的功能,代碼如下:
$arr = array( 'fruit' =>array('apple', 'banana'), 'animal' =>array('dog', 'cat') ); foreach($arr as $key =>$val){ echo $key . "
"; foreach($val as $v){ echo $v . ","; } echo "
"; }
上面的代碼中,我們建立了一個二維數(shù)組,它分別包含了兩個以不同分類命名的一維數(shù)組,其中每個一維數(shù)組中都包含了不同的元素。具體到實(shí)現(xiàn)上,你可以看到與一個一維數(shù)組的Foreach處理方式基本相同。唯一不同的是,在二維數(shù)組中Foreach需要還需要嵌套一層Foreach層去遍歷每個子數(shù)組內(nèi)的元素。
另外,在Foreach中,我們的$val變量是一個引用變量,因此在遍歷數(shù)組的時候,如果$val 是數(shù)組元素的引用,則類似于改變$val的值,依賴的數(shù)組元素會加以改變,如下所示:
$arr = array('apple', 'banana', 'orange'); foreach($arr as &$val){ $val = $val . " pie"; } print_r($arr);
上述代碼會遍歷數(shù)組$arr的每個元素,將它的值加上“pie”,因此使用print_r打印輸出數(shù)組后,我們會看到每個元素后都加上了這兩個詞組合成的字符串pie。
綜上所述,F(xiàn)oreach是PHP中非常常用的一個關(guān)鍵字,靈活的使用可以極大提升代碼效率,減少代碼中的冗余和重復(fù)的處理過程。唯一需要注意的是,在使用Foreach的過程中,我們需要謹(jǐn)慎對待引用變量的處理。Foreach深度遍歷多維數(shù)組時,層層嵌套也是常有的場景。函數(shù)嵌套雖然提高了靈活性,但需要使用者在使用過程中注意維護(hù)棧的關(guān)系。