ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルに基づく配列トラバーサル手法の概要分析

PHP_PHP チュートリアルに基づく配列トラバーサル手法の概要分析

WBOY
リリース: 2016-07-21 15:08:22
オリジナル
889 人が閲覧しました

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

コードをコピーします コードは次のとおりです:

$colors= array('red','blue','green',' yellow') ;
foreach ( $colorsas$color){
echo "$color は好きですか?
";
}
?>

表示結果:
赤は好きですか?
青は好きですか? ?
緑は好きですか?

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

#example2:

コードをコピーします コードは次のとおりです:
$colors= array('red','blue','green',' yellow') ;
while( list($key,$val)= each($colors)) {
echo "$val の他のリスト
";
}
?>

表示結果:
レッドのその他のリスト
グリーンのその他のリスト


3. for()

#example3:

コードは次のとおりです:

$arr= array ("0"=> "zero") ,"1 "=> "1","2"=> "2");for ($i= 0;$i$str= $arr[ $i] ;
echo "その数値は $str.
";
}
?>


表示結果:
数値は 0
数値は 1 です。 .


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

key()

mixed key(array input_array)key()関数は現在の値を返しますinput_array のポインター 位置のキー要素。
#example4



コードをコピーします
コードは次のとおりです:

$capitals= array("Ohio"=> "Columbus","Towa"=> "デモイン", "アリゾナ"=> "フェニックス");echo "

これらの州の州都の名前を教えていただけますか?

";
while($key= key($capitals)) {
echo $ key."
";
next($capitals);
//各 key() 呼び出しではポインタは進みません。これを行うには、next() 関数を使用します
}
?>


結果を表示します:
これらの州の州都の名前を教えていただけますか?
オハイオ
トーワ
アリゾナ
reset()
mixed replace(array input_array)
reset( ) 関数は、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 => 赤
2 => 緑

注: 1 つの配列を別の配列に代入します。元の配列ポインタを設定するため、上記の例で $colors をループ内の別の変数に代入すると、無限ループが発生します。
たとえば、$s1 = $colors; を while ループに追加してコードを再度実行すると、ブラウザーは結果を無限に表示します。

each()


array each(array input_array)

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

コードは次のとおりです:
$capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines ","アリゾナ "=> "フェニックス");
$s1= each($capitals);print_r($s1);
?>

表示結果:
Array ([1] => Columbus [value] => Columbus [0] => Ohio [key] => Ohio )
current(), next(), prev(), end ()
mixed current(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."< br /> ";
$fruit= prev($fruits); //return "apple"
echo $fruit."
";
$fruit= end($fruits); //return "バナナ"
echo $fruit."
";
?>

表示結果:
リンゴ
オレンジ
リンゴ
バナナ
============ しよう3 つの走査をテストする 配列の速度 ===========
一般に、配列を走査するには for、while、foreach の 3 つの方法があります。その中で最もシンプルで便利なのは foreach です。まず、50,000 個の添字を持つ 1 次元配列を走査するのにかかる時間をテストしてみましょう。
テスト環境:
Intel Core Due2 2GHz
2GB 1067MHz DDR3
Mac OS

コードは次のとおりです:


$arr= array();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< ; 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)

';
?>



Test結果:


for の使用時間:0.0228429(s)
while の使用時間:0.0544658 (s)
foreach の使用時間:0.0085628(s)

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

http://www.bkjia.com/PHPjc/327481.html

www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/327481.html

1. foreach() foreach() は、配列内のデータを走査するための最も単純かつ効果的な方法です。 #example1: コードをコピーします: ?php $colors= array('red','blue','green',' yellow');
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート