遍歷數(shù)組
遍歷數(shù)值陣列
遍歷陣列中的所有元素是常用的一種操作,在遍歷的過程中可以完成查詢或其他功能。
<1>使用for結(jié)構(gòu)遍歷陣列;
範(fàn)例
<?php //聲明一個數(shù)組,值為1到10 $num = array(1,2,3,4,5,6,7,8,9,10); //按照索引數(shù)組的特點,下標(biāo)從0開始。所以1的下標(biāo)為0,10的下標(biāo)為9 echo $num[0].'<br />'; echo $num[9].'<br />'; //我們可以得到數(shù)組中元素的總個數(shù),為10 echo count($num); //遍歷這個索引數(shù)組的話,我們就可以定義一個變量為$i //$i 的值為0,從0開始 //可以設(shè)定一個循環(huán)條件為:$i 在下標(biāo)的(9)最大值之內(nèi)循環(huán) for($i = 0 ; $i < count($num) ; $i++){ echo $num[$i].'<br />'; } ?>
可以完成陣列的遍歷。
從0開始的,定義$i=0 。每次循環(huán)的時候讓$i 加1 ,但是必須要小於10,因為陣列下標(biāo)的最大值為9。
這樣,我們就學(xué)會了對索引連續(xù)下標(biāo)數(shù)組的遍歷。
<2>使用foreach結(jié)構(gòu)遍歷數(shù)組;
for循環(huán)可以遍歷連續(xù)下標(biāo)的索引數(shù)組??墒?,我們發(fā)現(xiàn)我們遍歷不了關(guān)聯(lián)數(shù)組,也遍歷不了下標(biāo)不連續(xù)的索引數(shù)組。
那我們其實在學(xué)循環(huán)的時候,有一個布林型循環(huán)是專門用來循環(huán)陣列的。這個循環(huán)的基本語法就是foreach基本語法。
語法格式如下:
foreach( 要循環(huán)的陣列變數(shù)as [鍵變數(shù)=>] 值變數(shù)){
//循環(huán)的結(jié)構(gòu)體
}
遍歷關(guān)聯(lián)數(shù)組
<?php $data = [ 'fj' => '鳳姐', 'fr' => '芙蓉', ]; foreach($data as $key => $value){ echo $key . '-------' . $value . '<br />'; } //如果我們只想讀取值的話,就可以把下面的$key => 給刪除掉,讀取的時候,就只讀取值了。做完上面的實驗,你可以打開下面的代碼再實驗幾次。 /* foreach($data as $value){ echo $value . '<br />'; } */ ?>
遍歷索引數(shù)組
我們可以透過foreach遍歷連續(xù)的索引數(shù)組,如下例:
<?php $data = array( 0 => '中國', 100 => '美國', 20 => '韓國', 300 => '德國', ); //待會兒可以自己做做實驗,循環(huán)遍歷一下下面的這個數(shù)組 //$data = array(1,2,3,4,5,6,7,8,9,10); foreach($data as $k => $v){ echo $k . '------' . $v .'<br />'; } ?>
遍歷多維數(shù)組
<?php $data = array( 0 => array( '中國' => 'china', '美國' => 'usa', '德國' => ' Germany', ), 1 => array( '湖北' => 'hubei', '河北' => 'hebei', '山東' => 'shandong', '山西' => 'sanxi', ), ); //注:我們在使用foreach循環(huán)時,第一次循環(huán)將鍵為0和鍵為1的兩個數(shù)組賦值給一個變量($value)。然后,再套一個循環(huán)遍歷這個$value變量,$value中的值取出來,賦值給$k和$v。 foreach($data as $value){ //第一次循環(huán)把國家的數(shù)組賦值給了$value //第二次循環(huán)把中國的省份的數(shù)組又賦值給了$value //因此,我在循環(huán)的時候把$value再遍歷一次 foreach($value as $k => $v){ echo $k . '-----' . $v .'<br />'; } //為了看的更清晰,我在中間加上華麗麗的分割線方便你來分析 echo '----------分割線-----------<br />'; } ?>
總結(jié):
1.???? 第一次循環(huán)的時候,將陣列賦值給了$value,然後用foreach循環(huán)$value。將二維的子數(shù)組中的鍵給到$k,值賦值給變數(shù)$v。
2.???? 第一次循環(huán)退出子陣列的循環(huán),並執(zhí)行後續(xù)程式碼顯示分割線。
3.???? 依此類推,第二次循環(huán)也是這樣。