ホームページ > バックエンド開発 > PHPチュートリアル > PHP 配列トラバーサル関数とその使用法の概要

PHP 配列トラバーサル関数とその使用法の概要

伊谢尔伦
リリース: 2023-03-11 06:58:01
オリジナル
1695 人が閲覧しました

1. foreach()

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

#example1:

<?php
$colors= array(&#39;red&#39;,&#39;blue&#39;,&#39;green&#39;,&#39;yellow&#39;);
foreach ($colorsas$color){
echo "Do you like $color? <br />";
}
?>
ログイン後にコピー

表示結果:

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

2. while()

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

#example2:

<?php
$colors= array(&#39;red&#39;,&#39;blue&#39;,&#39;green&#39;,&#39;yellow&#39;);
while(list($key,$val)= each($colors)) {
echo "Other list of $val.<br />";
}
?>
ログイン後にコピー

表示結果:

赤のその他のリスト
青のその他のリスト
緑のその他のリスト
黄色のその他のリスト

3. for()

#example3:

<?php
$arr= array ("0"=> "zero","1"=> "one","2"=> "two");
for ($i= 0;$i< count($arr); $i++){
$str= $arr[$i];
echo "the number is $str.<br />";
}
?>
ログイン後にコピー

表示結果:

数字は0です。
数字は1です。
数字は2です。

========== 以下は機能の紹介です==== ==== ===

key()

mixed key(array input_array)

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

#example4

  1. <?php
    $capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines","Arizona"=> "Phoenix");
    echo "<p>Can you name the capitals of these states?</p>";
    while($key= key($capitals)) {
    echo $key."<br />";
    next($capitals);
    //每个key()调用不会推进指针。为此要使用next()函数
    }
    ?>
    ログイン後にコピー

表示結果:

これらの州の州都の名前を教えてください?
オハイオ
トワ
アリゾナ

reset()

混合リセット(array input_array)

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

#example5 - #example1 にコード

<?php
$colors= array(&#39;red&#39;,&#39;blue&#39;,&#39;green&#39;,&#39;yellow&#39;);
foreach ($colorsas$color){
echo "Do you like $color? <br />";
}
reset($colors);
while(list($key,$val)= each($colors)) {
echo "$key=> $val<br />";
}
?>
ログイン後にコピー

を追加すると、結果が表示されます:

赤は好きですか?
青は好きですか?
緑は好きですか?
黄色は好きですか?
0 => ; red
1 => blue
2 => green
3 => yellow

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

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

each()

array each(array input_array)

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

#example6

<?php
$capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines","Arizona"=> "Phoenix");
$s1= each($capitals);
print_r($s1);
?>
ログイン後にコピー

表示結果:

Array ( [1] => コロンブス [値] => コロンバス [0] => オハイオ [キー] => オハイオ )

現在()、next()、prev()、end()

mixed current(array target_array)

current() 関数は、target_

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

#example7

<?php
$fruits= array("apple","orange","banana");
$fruit= current($fruits); //return "apple"
echo $fruit."<br />";
$fruit= next($fruits); //return "orange"
echo $fruit."<br />";
$fruit= prev($fruits); //return "apple"
echo $fruit."<br />";
$fruit= end($fruits); //return "banana"
echo $fruit."<br />";
?>
ログイン後にコピー

表示結果:

apple

orange
apple
banana

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

一般に、配列を走査するには、for、while、foreach の 3 つのメソッドがあります。その中で最もシンプルで便利なのは foreach です。まず、50,000 個の添え字を持つ

1 次元配列 を走査するのにかかる時間をテストしてみましょう。

テスト環境:

Intel Core Due2 2GHz
2GB 1067MHz DDR3
Mac OS


テスト結果:

使用時間:0.0228429(s)

使用時間:0.0544658(s)

の時間foreach:0.0085628(s)

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

以上がPHP 配列トラバーサル関数とその使用法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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