php foreachは連想配列を走査します
foreach の基本構文
前の章の内容を通じて、連続する添え字のインデックス配列を走査する方法を学びました。ただし、連想配列を走査することはできず、不連続な添え字を持つインデックス配列も走査できないことがわかりました。
実際にループを学習していたとき、配列をループするために特に使用されるブール ループがありました。このループの基本構文は、foreach の基本構文です。
構文形式は次のとおりです:
foreach( 要循环的数组变量 as [键变量 =>] 值变量){ //循环的结构体 }
連想配列のトラバース
これは固定された使用法であり、ループされる配列を入れます。
as は固定キーワードです
次のキー変数はオプションです。ループするたびに、foreach 構文はキーを取り出してキー変数に割り当てます。
次の値変数は必須です。 。 の。ループするたびに、値が value 変数に格納されます。
この構文の理解を深めるために、以下の例としてコードを使用します。
<?php $data = [ 'fj' => '凤姐', 'fr' => '芙蓉', ]; foreach($data as $key => $value){ echo $key . '-------' . $value . '<br />'; } //如果我们只想读取值的话,就可以把下面的$key => 给删除掉,读取的时候,就只读取值了。做完上面的实验,你可以打开下面的代码再实验几次。 /* foreach($data as $value){ echo $value . '<br />'; } */ ?>
実行して結果を見てみましょう:
上記の実行結果から、次の結果が得られます:
1. ループ内で毎回、添え字を変数 $key に割り当て、 value 変数を変数 $value に代入します
2. ループしてキーと値を 1 回読み取ります。上記の例のように、「Sister Feng」を読み取った後、「Furong」を読み出します。最後まで読み込んだ後、読み取れる配列要素が存在しないことが判明すると、ループはデータの走査を停止します。
注: $key と $value は変数名である必要はありません。 $kai => $wen など、別の名前を付けることもできます。 キーがどの変数に割り当てられているか、および値が他のどの変数に割り当てられているかを知る必要があります。
インデックス配列
foreachの走査は非常に簡単に学ぶことができます。したがって、次の例のように、foreach を通じて連続インデックス配列をトラバースできます:
<?php $data = array( 0 => '中国', 100 => '美国', 20 => '韩国', 300 => '德国', ); //待会儿可以自己做做实验,循环遍历一下下面的这个数组 //$data = array(1,2,3,4,5,6,7,8,9,10); foreach($data as $k => $v){ echo $k . '------' . $v .'<br />'; } ?>
実行して結果を確認します:
foreach の結果に基づく推論は、連想配列の結果と同じです。終わったばかりです。
違いは、不連続なインデックス配列です。配列の要素が読み取られるたびに、現在のループの添字が変数 $k に割り当てられ、値が変数 $v に割り当てられます。キーと値は読み取りごとに出力され、表示されます。ループは一度に 1 インデックスずつ後方に移動します。最後まで読んで実行を終了します。
多次元配列の走査
配列内に別の配列がありますが、それをどのように走査すればよいでしょうか?実験してみましょう:
<?php $data = array( 0 => array( '中国' => 'china', '美国' => 'usa', '德国' => ' Germany', ), 1 => array( '湖北' => 'hubei', '河北' => 'hebei', '山东' => 'shandong', '山西' => 'sanxi', ), ); //注:我们在使用foreach循环时,第一次循环将键为0和键为1的两个数组赋值给一个变量($value)。然后,再套一个循环遍历这个$value变量,$value中的值取出来,赋值给$k和$v。 foreach($data as $value){ //第一次循环把国家的数组赋值给了$value //第二次循环把中国的省份的数组又赋值给了$value //因此,我在循环的时候把$value再遍历一次 foreach($value as $k => $v){ echo $k . '-----' . $v .'<br />'; } //为了看的更清晰,我在中间加上华丽丽的分割线方便你来分析 echo '----------分割线-----------<br />'; } ?>
結果は出ました:
概要:
最初のループでは、配列が $value に割り当てられ、次に foreach を使用して $value をループします。 2 次元部分配列のキーを $k に与え、その値を変数 $v に代入します。
最初のループは部分配列のループを抜け、後続のコードが実行されて分割線が表示されます。
など、2周目も同様です。
Job
は次の配列を表示します:
<?php $arr=array( '教学部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '宣传部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), '财务部'=>array( array('李某','18','人妖'), array('高某','20','男'), array('张某','21','妖人'), ), ); ?>
トラバーサル、効果は次のとおりです:
概要:
1. 最初のループで、配列を $value に代入し、次に foreach ループを使用します。 $値。 2 次元部分配列のキーを $k に与え、その値を変数 $v に代入します。
2. 最初のループは部分配列ループを終了し、後続のコードが実行されて分割線が表示されます。
3. など、2周目も同様です。