php foreachは連想配列を走査します
foreach の基本構(gòu)文
前の章の內(nèi)容を通じて、連続する添え字のインデックス配列を走査する方法を?qū)Wびました。ただし、連想配列を走査することはできず、不連続な添え字を持つインデックス配列も走査できないことがわかりました。
実際にループを?qū)W習(xí)していたとき、配列をループするために特に使用されるブール ループがありました。このループの基本構(gòu)文は、foreach の基本構(gòu)文です。
構(gòu)文形式は次のとおりです:
foreach( 要循環(huán)的數(shù)組變量 as [鍵變量 =>] 值變量){ //循環(huán)的結(jié)構(gòu)體 }
連想配列のトラバース
これは固定された使用法であり、ループされる配列を入れます。
as は固定キーワードです
次のキー変數(shù)はオプションです。ループするたびに、foreach 構(gòu)文はキーを取り出してキー変數(shù)に割り當(dāng)てます。
次の値変數(shù)は必須です。 。 の。ループするたびに、値が value 変數(shù)に格納されます。
この構(gòu)文の理解を深めるために、以下の例としてコードを使用します。
<?php $data = [ 'fj' => '鳳姐', 'fr' => '芙蓉', ]; foreach($data as $key => $value){ echo $key . '-------' . $value . '<br />'; } //如果我們只想讀取值的話,就可以把下面的$key => 給刪除掉,讀取的時候,就只讀取值了。做完上面的實(shí)驗(yàn),你可以打開下面的代碼再實(shí)驗(yàn)幾次。 /* foreach($data as $value){ echo $value . '<br />'; } */ ?>
実行して結(jié)果を見てみましょう:
上記の実行結(jié)果から、次の結(jié)果が得られます:
1. ループ內(nèi)で毎回、添え字を変數(shù) $key に割り當(dāng)て、 value 変數(shù)を変數(shù) $value に代入します
2. ループしてキーと値を 1 回読み取ります。上記の例のように、「Sister Feng」を読み取った後、「Furong」を読み出します。最後まで読み込んだ後、読み取れる配列要素が存在しないことが判明すると、ループはデータの走査を停止します。
注: $key と $value は変數(shù)名である必要はありません。 $kai => $wen など、別の名前を付けることもできます。 キーがどの変數(shù)に割り當(dāng)てられているか、および値が他のどの変數(shù)に割り當(dāng)てられているかを知る必要があります。
インデックス配列
foreachの走査は非常に簡単に學(xué)ぶことができます。したがって、次の例のように、foreach を通じて連続インデックス配列をトラバースできます:
<?php $data = array( 0 => '中國', 100 => '美國', 20 => '韓國', 300 => '德國', ); //待會兒可以自己做做實(shí)驗(yàn),循環(huán)遍歷一下下面的這個數(shù)組 //$data = array(1,2,3,4,5,6,7,8,9,10); foreach($data as $k => $v){ echo $k . '------' . $v .'<br />'; } ?>
実行して結(jié)果を確認(rèn)します:
foreach の結(jié)果に基づく推論は、連想配列の結(jié)果と同じです。終わったばかりです。
違いは、不連続なインデックス配列です。配列の要素が読み取られるたびに、現(xiàn)在のループの添字が変數(shù) $k に割り當(dāng)てられ、値が変數(shù) $v に割り當(dāng)てられます。キーと値は読み取りごとに出力され、表示されます。ループは一度に 1 インデックスずつ後方に移動します。最後まで読んで実行を終了します。
多次元配列の走査
配列內(nèi)に別の配列がありますが、それをどのように走査すればよいでしょうか?実験してみましょう:
<?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é)果は出ました:
概要:
最初のループでは、配列が $value に割り當(dāng)てられ、次に foreach を使用して $value をループします。 2 次元部分配列のキーを $k に與え、その値を変數(shù) $v に代入します。
最初のループは部分配列のループを抜け、後続のコードが実行されて分割線が表示されます。
など、2周目も同様です。
Job
は次の配列を表示します:
<?php $arr=array( '教學(xué)部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('張某','21','妖人'), ), '宣傳部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('張某','21','妖人'), ), '財(cái)務(wù)部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('張某','21','妖人'), ), ); ?>
トラバーサル、効果は次のとおりです:
概要:
1. 最初のループで、配列を $value に代入し、次に foreach ループを使用します。 $値。 2 次元部分配列のキーを $k に與え、その値を変數(shù) $v に代入します。
2. 最初のループは部分配列ループを終了し、後続のコードが実行されて分割線が表示されます。
3. など、2周目も同様です。