for ループには限られた数値インデックスのみが含まれます。for および foreach トラバーサルの後、データを次のトラバーサルで使用できるようにするには、reset() する必要はありませんが、各メソッドには
/ が必要です。 /a
$ arr=array('a'=>'abc','b'=>123,'c'=>true);
//b
//$arr=range('a' ,'d' );//1
for($i=0;$iecho $arr[$i].', ';
echo '
' ;//2
foreach($arr as $key)
echo "$key, ";
echo '
';//3
foreach($arr as $ key=> $val)
echo "$key-$val, ";
echo '
';//4
reset($arr);
while($item=each($ arr)){
echo $item['key'].'-'.$item['value'].', ';
}
echo '
';//5
reset ($arr) ;
while(list($key,$val)=each($arr)){
echo "$key-$val, ";
}
echo '
';
? >ステートメント a $arr=array('a'=>'abc','b'=>123,'c'=>true); を使用して $arr を初期化し、数値インデックス配列を取得します。出力は次のようになります。以下の通り:, , ,
abc, 123, 1,
a-abc, b-123, c-1,
a-abc, b-123, c-1,
a-abc, b-123, c-1、ステートメント b $arr=range('a','d'); を使用して $arr を初期化して連想配列を取得します。出力は次のようになります:a, b, c, d,
a, b 、c、d、
0-a、1-b、2-c、3-d、
0-a、1-b、2-c、3-d、
0-a、1-b、2- c、3-d、
合格 テストを繰り返した結果、同じ配列を走査する場合、foreach が最も速く、while が最も遅いことがわかりました。 foreach は while よりも約 20% ~ 30% 高速です。次に、配列の添字を 500000 および 5000000 に増やしても、テスト結果は同じです。しかし、原理的な観点から見ると、foreach は (配列をコピーすることによって) 配列のコピーを操作しますが、while は配列の内部インデックスを移動することによって操作します。一般的に、while は foreach よりも高速であると考えられています。 foreach は最初に配列がコピーされる場所を配置し、while は内部ポインタを直接移動します) が、結果はまったく逆になります。その理由は、foreach が PHP の内部実装であるのに対し、while は一般的なループ構造であるためです