ホームページ >バックエンド開発 >PHPチュートリアル >配列を走査するための PHP の for ループ構造と foreach ループ構造の違いを理解する方法
配列の走査はプログラミングにおいて最も一般的なことです。ここでは for と foreach の 2 つのメソッドについて説明します。
まず、走査用に 2 つの配列を準備します。
$arr1=array(1=>' a', 3) =>22, 5=>'b', 4=>'c', 8=>'d');
$arr2=array('a'=>'aaa' , 'b' =>'bbb', 'c'=>'ccc', 'd'=>'ddd', 'e'=>'eee');
1: ループ構造
ループ 1:
for($i=0,$num=count($arr1);$i<$num;$i++){ echo $arr1[$i].' '; }
出力結果: a 22 c
ループ 2:
for($i=0,$num=count($arr2);$i<$num;$i++){ echo $arr2[$i].' '; }
このステートメントには出力がありません
分析:
ループ 1 は配列 $arr1 の最初の 2 つのユニットのみを出力しますが、ループ 2 は $ には何も出力されませんar2.
その理由は、for ループが数値ずつインクリメントされるためで、たとえば、ループ 1 は $arr1 配列内のキー 0 から 4 のユニットに $i=0 から $i まで段階的にアクセスします。 =4 ただし、この配列のキーは 1、3、5、4、8 です。 count($arr1)=5 であるため、最終出力は $i'b',8=>'d') を超える配列ユニットにはアクセスされません。結果のみ: a 22 c; $arr2 のすべてのキーは数値ではなく文字であるため、ループ 2 には出力はありません。
2出力結果: a=>aaa b=>bbb c=>ccc d=>ddd e=>eee
分析:
foreachループ構造は配列内のポインタに従ってループし、 when
foreach
が実行を開始すると、配列内のポインターは自動的に最初のユニットを指します。したがって、次のユニットは次のループで取得され、配列キーに従って配列全体を走査する必要はありません。これは foreach と for の違いでもあります。もちろん、
foreach は配列とオブジェクトに対してのみ使用できます。また、
foreach は内部配列ポインターに依存しているため、ループ内でその値を変更すると予期しない動作が発生する可能性があります。 注: for の各ループは、対応するインデックスの下の値を操作し、各値への変更はトラバースされたオブジェクトにも反映されます。 foreach がユニットを操作するたびに、そのインデックスと値をそれぞれ変数に取り込むか、値のみを 1 つの変数に取り出して、走査されるオブジェクト自体に影響を与えることなく、インデックスと値を使用して変数を個別に操作します。トラバーサル プロセス中にオブジェクトの値を変更する場合は、宣言内の変数の前に & 記号を追加する必要があります。例: foreach($array as&$value)。 結論: 配列が配列ユニットのキーとして連続する番号を使用する場合、for ループ構造を使用できます。配列のキーまたは配列のキーに文字が含まれているかどうかが不明な場合は、foreach ループ構造を使用する必要があります。 。
以上が配列を走査するための PHP の for ループ構造と foreach ループ構造の違いを理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。