在之前的文章《PHP循環(huán)學(xué)習(xí)三:如何使用for循環(huán)語句遍歷數(shù)組》中,我們帶大家了解了for循環(huán)語句,分析了for循環(huán)語句的執(zhí)行過程,通過代碼實(shí)例介紹了使用for循環(huán)語句遍歷數(shù)組的方法。利用for語句遍歷數(shù)組的方法有點(diǎn)復(fù)雜,今天我們來學(xué)習(xí)如何利用foreach語句來遍歷數(shù)組及修改數(shù)組中的元素,下面來一起學(xué)習(xí)吧!!
foreach是專門為遍歷數(shù)組而設(shè)計(jì)的語句,是遍歷數(shù)組時(shí)常用的方法,在遍歷數(shù)組方面提供了很大的便利;PHP5后還可以遍歷對(duì)象(foreach僅能夠應(yīng)用于數(shù)組和對(duì)象)。(附:PHP函數(shù)之a(chǎn)rray數(shù)組函數(shù)視頻講解)
foreach語句遍歷數(shù)組與數(shù)組下標(biāo)無關(guān),且可以用于不連續(xù)的索引數(shù)組和以字符串為下標(biāo)的關(guān)聯(lián)數(shù)組。
foreach語句解析
下面我們先來了解一下foreach語句,該語句有兩種語法格式:
語法格式1:
foreach ($array as $value){ 語句塊; }
遍歷給定的 $array
數(shù)組,在每次循環(huán)中將當(dāng)前數(shù)組的值賦給 $value
。
語法格式2:
foreach ($array as $key => $value){ 語句塊; }
遍歷給定的 $array
數(shù)組,在每次循環(huán)中會(huì)將當(dāng)前數(shù)組的值賦給 $value
,鍵名賦給 $key
。
說明:
foreach語句在每次循環(huán)時(shí),數(shù)組內(nèi)部的指針會(huì)向前移一步,這樣在下一次循環(huán)中會(huì)得到下一個(gè)數(shù)組元素,直到遍歷到數(shù)組的末尾,停止遍歷并退出循環(huán)。
foreach語句遍歷和修改數(shù)組
了解了foreach語句的語法構(gòu)成,接下來我們就來實(shí)際操作下,通過代碼實(shí)例來具體看看foreach語句如何遍歷數(shù)組。
實(shí)例1:
<?php header("Content-type:text/html;charset=utf-8"); $array= array("香蕉","蘋果","梨子","橙子","橘子","榴蓮"); foreach ($array as $value) { echo $value . "<br/>"; } ?>
輸出:
香蕉 蘋果 梨子 橙子 橘子 榴蓮
實(shí)例2:
<?php header("Content-type:text/html;charset=utf-8"); $array= array("香蕉","蘋果","梨子","橙子","橘子","榴蓮"); foreach ($array as $key => $value) { echo "鍵名為:".$key.",鍵值為:".$value . "<br/>"; } ?>
輸出:
遍歷修改數(shù)組元素
一般情況下,使用foreach語句遍歷數(shù)組時(shí),是對(duì)數(shù)組的備份進(jìn)行操作,一般不會(huì)影響數(shù)組本身。
例如:在循環(huán)內(nèi)部修改數(shù)組,然后在循環(huán)外訪問數(shù)組,會(huì)發(fā)現(xiàn)數(shù)組沒有改變
<?php header("Content-type:text/html;charset=utf-8"); $array= array(1,2,3,4,5,); foreach ($array as $value) { $value = $value*2; // 元素值乘以2 } var_dump($array) ?>
輸出:
可以看出,數(shù)組元素沒有發(fā)生變化。但有時(shí)候是需要通過循環(huán)來改變數(shù)組,那要怎么辦?
可以采用引用循環(huán)(在 $value
之前加上 &
,這樣foreach語句會(huì)以引用賦值而不是拷貝一個(gè)值),那么在循環(huán)體內(nèi)對(duì)數(shù)組進(jìn)行操作,就會(huì)影響數(shù)組本身。
<?php $array= array(1,2,3,4,5,); foreach ($array as &$value) { $value = $value*2; // 元素值乘以2 } var_dump($array) ?>
輸出:
可以看出,在最后一個(gè)元素前,有一個(gè)&
,那是因?yàn)閿?shù)組最后一個(gè)元素的 $value 引用在 foreach 循環(huán)之后仍會(huì)保留。我們需要使用unset() 來將其銷毀。
<?php $array= array(1,2,3,4,5,); foreach ($array as &$value) { $value = $value*2; // 元素值乘以2 } unset($value); // 最后取消掉引用 var_dump($array) ?>
輸出:
推薦:《PHP面試題大匯總(收藏)》《php視頻教程》