ホームページ > バックエンド開発 > PHPチュートリアル > PHP で配列を走査する方法のまとめ

PHP で配列を走査する方法のまとめ

WBOY
リリース: 2016-06-23 13:41:20
オリジナル
806 人が閲覧しました

1. foreach()

foreach() は、配列内のデータを走査するための最も簡単で効果的なメソッドです。

#example1:

$colors=array('red','blue','green',' yellow');

foreach ($colorsas$color){

echo " $color は好きですか?
";

}

?>


表示結果:

赤は好きですか?
青は好きですか?
緑は好きですか?
好きですか? yellow?

2. while()

while() は通常、list() および each() と組み合わせて使用​​されます。

#example2:

$colors= array('red','blue','green',' yellow');

while(list($key,$val)= each( $colors)) {

echo "$val のその他のリスト。緑のその他のリスト。

黄色のその他のリスト。

3.for()

#example3:


$arr= 配列("0"=> "ゼロ"、"1"= > "1"、"2"=> "2");

for ($i= 0;$i

$str= $arr[$i] ;

echo "数字は $str です。 .

========== 以下は関数の紹介です ===== =====

key()

mixed key(array input_array)

key() 関数は、input_array 内の現在の位置を返します。ポインター位置のキー要素です。

#example4

$capitals= array("オハイオ"=>"コロンバス","トーワ"=>"デモイン","アリゾナ"=>"フェニックス");

echo "

これらの州の州都の名前を教えてもらえますか?

";

while($key= key($capitals)) {

echo $key."
";

next($capitals);

//各 key() 呼び出しではポインタは進みません。これを行うには、next() 関数を使用します

}

?>

結果を表示します:

これらの州の州都の名前を教えてください

オハイオ

トワ

アリゾナ

reset()

混合リセット(array input_array )

replace() 関数は、input_array のポインタを配列の先頭に戻すために使用されます。この関数は、スクリプト内で同じ配列を複数回表示または処理する必要がある場合によく使用されます。また、この関数はソートの最後によく使用されます。

#example5 - #example1 にコードを追加します

$colors= array('red','blue','green',' yellow');

foreach ($colorsas$color) {

echo "$color は好きですか?
";

}

reset($colors);

while(list($key,$val)= each($colors)) {

echo "$key=> $val
";

}

?>

結果の表示:

青は好きですか?

緑は好きですか?黄色は好きですか?

0 => 赤

1 => 青

2 => 緑

3 => 黄色

注: 配列を別の配列に代入すると、元の配列ポインタがリセットされます。 $colors をループ内の別の変数に追加すると、無限ループが発生します。

たとえば、$s1 = $colors; を while ループに追加してコードを再度実行すると、ブラウザーは結果を無限に表示します。

each()

array each(array input_array)

each() 関数は、入力配列の現在のキーと値のペアを返し、ポインターを 1 位置進めます。返された配列には 4 つのキーが含まれ、キー 0 とキーにはキー名が含まれ、キー 1 と値には対応するデータが含まれます。 each() が実行される前にポインタが配列の末尾にある場合は、FALSE が返されます。

#example6

$capitals= array("オハイオ"=>"コロンバス","トーワ"=>"デモイン","アリゾナ"=>"フェニックス");


$s1= each($capitals);

print_r($s1);

?>

表示結果:

Array ( [1] => Columbus [value] => Columbus [0] = > オハイオ [キー] => オハイオ )
current()、next()、prev()、end()

混合電流(array target_array)

current() 関数は、target_array 配列の現在のポインター位置にある配列値を返します。 next()、prev()、end() 関数とは異なり、current() はポインタを移動しません。
next() 関数は、現在の配列ポインターの次の位置にある配列値を返します。
prev() 関数は、現在のポインターの前の位置にある配列値を返します。ポインターが元々配列の最初の位置にある場合は、FALSE を返します。
end() 関数は、ポインタを target_array の最後の位置に移動し、最後の要素を返します。

#example7

$fruits= array("apple","orange","banana");

$fruit= current($fruits) //return "apple"

echo $fruit."
";

$fruit= next($fruits); //return "orange"

echo $fruit."
";

$fruit= prev ($fruits); // "リンゴ"

echo $fruit を返します。"
";

$fruit= end($fruits); // "バナナ"

echo $fruit を返します。"
";

?>

表示結果:

apple
orange
apple
banana

============ 3 つの配列走査の速度をテストしてみましょう= ==========

一般に、配列を走査するには、for、while、foreach の 3 つのメソッドがあります。その中で最もシンプルで便利なのは foreach です。まず、50,000 個の添字を持つ 1 次元配列を走査するのにかかる時間をテストしてみましょう。

テスト環境:
Intel Core Due2 2GHz
2GB 1067MHz DDR3
Mac OS lt;?php

$arr = array();

for($i= 0; $i $arr[]= $i*rand(1000,9999);

}

function GetRunTime()

{

list($usec,$sec)=explode(" ",microtime());

return ((float)$usec+(float)$sec);

}

###### ######################### #####

$time_start= GetRunTime();

for($i= 0; $i< count($arr); $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) )

';

?>

テスト結果:

使用時間:0.0228429(s)

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

使用foreach の時間:0.0085628(s)

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

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