PHP で配列を走査する 3 つの方法と効率の比較分析_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:06:49
オリジナル
772 人が閲覧しました

PHP で配列を走査する 3 つの方法とその効率比較分析

この記事では、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

$str= $arr[$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)

';

?>

テスト結果:

?

テストを繰り返した結果、同じ配列を走査する場合、foreach が最も速く、while が最も遅いことがわかりました。原則として、foreach は (配列をコピーすることによって) 配列のコピーを操作しますが、while は配列の内部インデックスを移動することによって操作します (foreach は最初に配列を移動するため)。実行開始時にコピーされますが、while は内部ポインタを直接移動します)、結果はまったく逆になります。その理由は、foreach が PHP の内部実装であるのに対し、while は一般的なループ構造であるためです。したがって、一般的なアプリケーションでは、foreach はシンプルで効率的です。 PHP5 では、foreach はクラスの属性をトラバースすることもできます。

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/957537.html技術記事 PHP で配列を走査する 3 つの方法と効率の比較 この記事では、主に PHP で配列を走査する 3 つの方法とその効率の比較を紹介します。
1

2

3

使用時間:0.0228429(s)

その間の使用時間:0.0544658(s)

foreachの使用時間:0.0085628(s)

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート