ホームページ >バックエンド開発 >PHPチュートリアル >for ループ構造と foreach ループ構造の違いは何ですか?
配列の走査は、プログラミングで最も一般的な方法です。ここでは、for と foreach の 2 つのメソッドについて説明します。これら 2 つのメソッドを使用して走査を実行するにはシナリオが多すぎます。ここでは、例として次の 2 つの配列についてのみ説明します。いわゆる「チューブを通してヒョウを見る」ことで、この 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 つ:
for ループ 構造
ループ 1:<?php for($i=0,$num=count($arr1);$i<$num;$i++){ echo $arr1[$i].' '; } ?>出力結果:
a 22 cループ 2:
<?php for($i=0,$num=count($arr2);$i<$num;$i++){ echo $arr2[$i].' '; } ?>このステートメント 出力はありません分析: ループ 1 は配列 $arr1 の最初の 2 ユニットのみを出力しますが、ループ 2 の $arr2 は何も出力しません。 その理由は、for ループが数値によってインクリメントされるためです。そのため、for はキーが数値である配列にのみアクセスできるため、たとえば、ループ 1 は $i=0 から $i=4 を使用して、キーが含まれる $arr1 配列に増分アクセスします。セルは 0 ~ 4. ですが、配列内のキーは 1、3、5、4、8 です。 count($arr1)=5 であるため、最終出力は $i'b',8=>'d') を超える配列ユニットにはアクセスされません。結果のみ: a 22 c; $arr2 のすべてのキーは数値ではなく文字であるため、ループ 2 には出力はありません。 2: foreach ループ構造 ループ 3:
<?php foreach($arr1 as $key=>$value){ echo $key.'=>'.$value.' '; } ?>出力結果:
1=>a 3=>22 5=>b 4=>c 8=>dループ 4:
<?php foreach($arr2 as $key=>$value){ echo $key.'=>'.$value.' '; } ?>出力結果:
a=>aaa b=>bbb c=>ccc d=>ddd e=>eee分析: foreach ループ構造は、ポイントに従ってループしますえー、中でarray はい、foreach の実行が開始されると、配列内のポインターは自動的に最初のユニットを指します。したがって、次のユニットは次のループで取得され、配列キーに従って配列全体を走査する必要はありません。これは foreach と for の違いでもあります。もちろん、foreach は配列とオブジェクトでのみ使用できます。また、foreach は内部配列ポインターに依存しているため、ループ内でその値を変更すると、予期しない 注: for の各ループは、対応する 結論: 配列が配列ユニットのキーとして連続する番号を使用する場合、for ループ構造を使用できます。配列のキーまたは配列のキーに文字が含まれているかどうかが不明な場合は、foreach ループ構造を使用する必要があります。
以上がfor ループ構造と foreach ループ構造の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。