3種遍歷數(shù)組的方法:1、用for語(yǔ)句遍歷,語(yǔ)法“for($i=0;$i<數(shù)組長(zhǎng)度;$i++){//循環(huán)代碼}”;2、用foreach語(yǔ)句遍歷,語(yǔ)法“foreach($arr as $k=>$v){//循環(huán)代碼}”;3、用while配合each()與list()進(jìn)行遍歷,語(yǔ)法“while(list($k,$v)=each($arr)){//循環(huán)代碼}”。
前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
本教程操作環(huán)境:windows7系統(tǒng)、PHP8.1版、DELL G3電腦
PHP中遍歷數(shù)組有三種常用的方法:
-
使用for語(yǔ)句循環(huán)遍歷數(shù)組;
-
使用foreach語(yǔ)句遍歷數(shù)組;
-
聯(lián)合使用list()、each()和while循環(huán)遍歷數(shù)組。
這三種方法中效率最高的是使用foreach語(yǔ)句遍歷數(shù)組。從PHP4開始就引入了foreach結(jié)構(gòu),是PHP中專門為遍歷數(shù)組而設(shè)計(jì)的語(yǔ)句,推薦大家使用。先分別介紹這幾種方法。
方法1:使用for語(yǔ)句遍歷
for循環(huán)會(huì)將控制循環(huán)次數(shù)的變量預(yù)先定義在for語(yǔ)句中,因此for循環(huán)語(yǔ)句能夠按照已知的循環(huán)次數(shù)進(jìn)行循環(huán)操作,適用于明確知道腳本需要運(yùn)行的次數(shù)的情況。
for 循環(huán)的語(yǔ)法格式如下:
for (初始化語(yǔ)句; 循環(huán)條件; 變量更新--自增或自減) { 語(yǔ)句塊; }
語(yǔ)句解析:
-
初始化語(yǔ)句(表達(dá)式1):主要是初始化一個(gè)變量值,用于設(shè)置一個(gè)計(jì)數(shù)器,即循環(huán)開始的值;該語(yǔ)句僅在第一次循環(huán)時(shí)執(zhí)行,以后都不會(huì)再執(zhí)行。
-
循環(huán)條件(表達(dá)式2):循環(huán)執(zhí)行的限制條件,用于控制是否執(zhí)行循環(huán)體中的代碼;如果條件為TRUE,則循環(huán)繼續(xù),如果條件為FALSE ,則循環(huán)結(jié)束,立即退出循環(huán)。
-
變量更新(表達(dá)式3):一個(gè)帶有自增或自減操作的表達(dá)式,循環(huán)每執(zhí)行一次,馬上修改計(jì)數(shù)器的值,以使循環(huán)條件逐漸變得“不成立”。
-
語(yǔ)句塊:條件判斷為真時(shí),需要執(zhí)行的若干代碼。
示例
<?php header("Content-type:text/html;charset=utf-8"); $array= array(2,"數(shù)學(xué)","梨子",3.14,"榴蓮",12); var_dump($array); echo "遍歷數(shù)組:<br>"; for ($i=0; $i < count($array); $i++) { echo $i.":".$array[$i] . "<br/>"; } ?>
輸出結(jié)果:
方法2:使用foreach語(yǔ)句遍歷
foreach是專門為遍歷數(shù)組而設(shè)計(jì)的語(yǔ)句,是遍歷數(shù)組時(shí)常用的方法,在遍歷數(shù)組方面提供了很大的便利;PHP5后還可以遍歷對(duì)象(foreach僅能夠應(yīng)用于數(shù)組和對(duì)象)。
foreach語(yǔ)句遍歷數(shù)組與數(shù)組下標(biāo)無(wú)關(guān),且可以用于不連續(xù)的索引數(shù)組和以字符串為下標(biāo)的關(guān)聯(lián)數(shù)組。
foreach語(yǔ)句有兩種語(yǔ)法格式:
-
語(yǔ)法格式1:
foreach ($array as $value){ 語(yǔ)句塊; }
遍歷給定的 $array 數(shù)組,在每次循環(huán)中將當(dāng)前數(shù)組的值賦給 $value。
示例
<?php header("Content-type:text/html;charset=utf-8"); $array= array(2,"數(shù)學(xué)","梨子",3.14,"榴蓮",12); var_dump($array); echo "遍歷數(shù)組:<br>"; foreach ($array as $val){ echo "值是:" . $val ; echo "<br/>"; } ?>
-
語(yǔ)法格式2:
foreach ($array as $key => $value){ 語(yǔ)句塊; }
遍歷給定的 $array 數(shù)組,在每次循環(huán)中會(huì)將當(dāng)前數(shù)組的值賦給 $value,鍵名賦給 $key。
示例:
<?php header("Content-type:text/html;charset=utf-8"); $array= array(2,"數(shù)學(xué)","梨子",3.14,"榴蓮",12); var_dump($array); echo "遍歷數(shù)組:<br>"; foreach ($array as $key => $value) { echo "鍵名為:".$key.",鍵值為:".$value . "<br/>"; } ?>
說(shuō)明:
foreach語(yǔ)句在每次循環(huán)時(shí),數(shù)組內(nèi)部的指針會(huì)向前移一步,這樣在下一次循環(huán)中會(huì)得到下一個(gè)數(shù)組元素,直到遍歷到數(shù)組的末尾,停止遍歷并退出循環(huán)。
方法3:利用while語(yǔ)句+each()+list()遍歷
while循環(huán)語(yǔ)句是一種當(dāng)型循環(huán)語(yǔ)句,先對(duì)循環(huán)條件進(jìn)行判斷,當(dāng)條件滿足,則執(zhí)行循環(huán)體,不滿足時(shí)則停止。
each() 函數(shù)返回?cái)?shù)組中當(dāng)前的鍵值并將數(shù)組指針向前移動(dòng)。在執(zhí)行 each() 之后,數(shù)組指針將停留在數(shù)組中的下一個(gè)元素或者當(dāng)碰到數(shù)組結(jié)尾時(shí)停留在最后一個(gè)元素。
list() 函數(shù)用于在一次操作中給一組變量賦值。
while循環(huán)+each() 函數(shù)+ list() 函數(shù)可以遍歷數(shù)組,下面通過(guò)代碼示例來(lái)看看:
<?php header("Content-type:text/html;charset=utf-8"); $array= array(2,"數(shù)學(xué)","梨子",3.14,"榴蓮",12); var_dump($array); echo "遍歷數(shù)組:<br>"; while( list($key, $val) = each($array) ) { echo "$key => $val<br>"; } ?>
輸出結(jié)果:
說(shuō)明:
while循環(huán)語(yǔ)句是一種當(dāng)型
循環(huán)語(yǔ)句,先對(duì)循環(huán)條件進(jìn)行判斷,當(dāng)條件滿足,則執(zhí)行循環(huán)體,不滿足時(shí)則停止。
-
作用:反復(fù)執(zhí)行某一項(xiàng)操作,直到指定的條件不成立。
-
特點(diǎn):先判斷表達(dá)式,當(dāng)表達(dá)式結(jié)果為真時(shí)執(zhí)行相應(yīng)的語(yǔ)句。
while循環(huán)的一般形式為:
while(表達(dá)式){ //表達(dá)式為循環(huán)條件 PHP語(yǔ)句塊; //PHP語(yǔ)句塊為循環(huán)體 }
語(yǔ)句解析:
-
先計(jì)算“表達(dá)式”的值,當(dāng)值為真時(shí), 執(zhí)行循環(huán)體內(nèi)的“PHP語(yǔ)句塊”;
說(shuō)明:“表達(dá)式”的計(jì)算結(jié)果是布爾類型( TRUE 或 FALSE)的,如果是其他類型的值也會(huì)自動(dòng)轉(zhuǎn)換為布爾類型的值(因?yàn)镻HP是弱語(yǔ)言類型,會(huì)根據(jù)變量的值,自動(dòng)把變量轉(zhuǎn)換為正確的數(shù)據(jù)類型)。
“語(yǔ)句塊”就是由
{ }
包圍的一個(gè)或多個(gè)語(yǔ)句的集合;如果語(yǔ)句塊中只有一個(gè)語(yǔ)句,也可以省略{ }
。 -
執(zhí)行結(jié)束后,返回到表達(dá)式,再次計(jì)算表達(dá)式的值進(jìn)行判斷,當(dāng)表達(dá)式值為真,則繼續(xù)執(zhí)行“語(yǔ)句塊”……這個(gè)過(guò)程會(huì)一直重復(fù)
-
直到表達(dá)式的值為假時(shí)才跳出循環(huán),執(zhí)行while 下面的語(yǔ)句。
while語(yǔ)句的流程圖如下所示:
通常“表達(dá)式”是使用比較運(yùn)算符或者邏輯運(yùn)算符計(jì)算后的值
注:“死循環(huán)”–無(wú)法靠自身的控制終止的循環(huán)
推薦:《PHP視頻教程》