PHP 配列走査パフォーマンスの比較_PHP チュートリアル

WBOY
リリース: 2016-07-20 11:10:19
オリジナル
965 人が閲覧しました

for ループには限られた数値インデックスのみが含まれます。for および foreach トラバーサルの後、データを次のトラバーサルで使用できるようにするには、reset() する必要はありませんが、各メソッドには

/ が必要です。 /a
$ arr=array('a'=>'abc','b'=>123,'c'=>true);
//b
//$arr=range('a' ,'d' );

//1
for($i=0;$i echo $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 は一般的なループ構造であるためです


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444745.html技術記事 for ループには限られた数値インデックスしかありません。for と foreach では、走査の完了後にデータを次の走査で使用できるようにするためにデータをリセットする必要はありませんが、各メソッドではそうします?phptutorial//a $arr=array ('a'= 'a...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!