この記事では、PHP で配列を走査する 3 つの方法とその効率比較を主に紹介し、配列を走査する 3 つの方法 (foreach、while、for) とそれらに関連する効率を分析します。比較には一定の参考値がありますので、困っている友達は参考にしてください
この記事では、PHP で配列を走査する 3 つの方法を分析し、その効率を比較します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
今日、友人が php で配列をトラバースする方法について質問したので、いくつか説明しました。ちなみにまとめ記事を書きますので、まとめが不完全な場合はご指摘ください
。まず、foreach()
foreach() は、配列内のデータを走査するための最も単純かつ効果的なメソッドです。
?
1 2 3 4 5 6 |
$urls= array('aaa','bbb','ccc','ddd'); foreach ($urls を $url){ echo "このサイトの URL は $url です! } ?> |
表示結果:
?
1 2 3 4 |
このサイトのURLはaaaです このサイトのURLはbbbです このサイトのURLはcccです このサイトのURLはdddです |
2 番目に、while() を list() および each() とともに使用します。
?
1 2 3 4 5 6 |
$urls= array('aaa','bbb','ccc','ddd'); while(list($key,$val)= each($urls)) { echo "このサイトの URL は $val です。 } ?> |
表示結果:
?
1 2 3 4 |
このサイトのURLはaaaです このサイトのURLはbbbです このサイトのURLはcccです このサイトのURLはdddです |
3 番目に、for() は for を使用して配列を走査します
?
1 2 3 4 5 6 7 |
$urls= array('aaa','bbb','ccc','ddd'); for ($i= 0;$i $str= $urls[$i]; echo "このサイトの URL は $str. } ?> |
表示結果:
?
1 2 3 4 |
このサイトのURLはaaaです このサイトのURLはbbbです このサイトのURLはcccです このサイトのURLはdddです |
配列を走査するこれらの方法のどちらが速いかという質問も時々受けます。簡単なテストをしてみましょう。そうすれば理解できるでしょう。
配列を移動する 3 つの速度をテストしてみましょう一般に、配列を走査するには、for、while、foreach の 3 つのメソッドがあります。その中で最もシンプルで便利なのは foreach です。まず、50,000 個の添字を持つ 1 次元配列を走査するのにかかる時間をテストしてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
$arr= 配列(); for($i= 0; $i<50000; $i++){ $arr[]= $i*rand(1000,9999); } 関数 GetRunTime() { list($usec,$sec)=explode(" ",microtime()); return ((float)$usec+(float)$sec); } #################################### $time_start= GetRunTime(); for($i= 0; $i } $time_end= GetRunTime(); $time_used= $time_end- $time_start; echo '使用時間:'.round($time_used, 7).'(s) '; unset($str, $time_start, $time_end, $time_used); #################################### $time_start= GetRunTime(); while(list($key, $val)= each($arr)){ $str= $val; } $time_end= GetRunTime(); $time_used= $time_end- $time_start; echo 'その間の使用時間:'.round($time_used, 7).'(s) '; unset($str, $key, $val, $time_start, $time_end, $time_used); #################################### $time_start= GetRunTime(); foreach($arr as$key=>$val){ $str= $val; } $time_end= GetRunTime(); $time_used= $time_end- $time_start; echo 'foreach の使用時間:'.round($time_used, 7).'(s) '; ?>
|
1 2 3
|
使用時間:0.0228429(s) その間の使用時間:0.0544658(s) foreachの使用時間:0.0085628(s)
|