大量のデータを取得したい場合は、配列をループする必要があります。データを取得するための PHP 配列ループを見てみましょう。データを配列内に配置する必要があるので、配列からデータを取得するにはどうすればよいでしょうか。配列からデータを取得するのは非常に簡単です。インデックス番号を使用して配列の適切な要素にアクセスするだけです。配列全体の内容を読み取るには、このチュートリアルの第 3 章で学習したループ構造を使用して配列をループするだけです。
簡単な例はどうでしょうか?
<ol class="dp-c"> <li class="alt"><span><span><html> <head></head> <body> My favourite bands are: <ul> <?php </span></span></li><li><span class="comment">// define array $artists = array('Metallica', 'Evanescence', 'Linkin Park', 'Guns n Roses'); </span><span> </span></li><li class="alt"><span class="comment">// loop over it and print array elements for ($x = 0; $x < sizeof($artists</span><span> </span></li></ol>
このスクリプトを実行すると、次の結果が表示されます:
<ol class="dp-xml"><li class="alt"><span><span>My favourite bands are: Metallica Evanescence Linkin Park Guns n Roses </span></span></li></ol>
この例では、最初に配列を定義し、次に for() ループを使用しました。 次の操作を実行します。配列を反復処理し、インデックス表記を使用して要素を取得し、それらを 1 つずつ表示します。 ここで、sizeof() 関数に注目してください。この関数は、最も重要で一般的に使用される配列関数の 1 つです。配列のサイズ (読み取り: 配列内の要素の数) を返します。これは主に、ループ数が配列内のすべての要素の数と一致していることを確認するために、ループ カウンターで使用されます。 連想配列を使用している場合は、array_keys() 関数と array_values() 関数を使用して、配列内のすべてのキーと対応する値のリストを簡単に取得できます。
<ol class="dp-c"><li class="alt"><span><span class="string">'bacon and eggs'</span><span>, </span><span class="string">'lunch'</span><span> => </span><span class="string">'roast beef'</span><span>, </span><span class="string">'dinner'</span><span> => </span><span class="string">'lasagna'</span><span>);</span></span></li> <li class="alt"><span><span> </span><span class="comment">/* returns the array ('breakfast', 'lunch', 'dinner') with numeric indices */</span><span> </span></span></li> <li class="alt"><span><span class="vars">$result</span><span> = </span><span class="func">array_keys</span><span>(</span><span class="vars">$menu</span><span>); print_r(</span><span class="vars">$result</span><span>); print " </span></span></li> <li> <span>"; </span><span class="comment">/* returns the array ('bacon and eggs', 'roast beef', 'lasagna') with numeric indices */</span><span> </span> </li> <li> <span class="vars">$result</span><span> = </span><span class="func">array_values</span><span>(</span><span class="vars">$menu</span><span>); print_r(</span><span class="vars">$result</span><span>); ?> </span> </li> </ol>
ただし、配列内のすべての要素を抽出する簡単な方法は次のとおりです。 PHP 4.0 では、配列を繰り返し列挙する目的に特化して設計された非常に新しいタイプのループ、foreach() ループ (その構文構造は同じ名前の Perl 構造に似ています) を導入しています。
その構文形式は次のとおりです:
<ol class="dp-c"><li class="alt"><span><span class="keyword">foreach</span><span> (</span><span class="vars">$array</span><span> </span><span class="keyword">as</span><span> </span><span class="vars">$temp</span><span>) { </span><span class="keyword">do</span><span> this! } </span></span></li></ol>
foreach() ループは、パラメーターとして渡された配列の各要素に対して 1 回実行され、反復ごとに配列を前方に走査します。 for() ループとは異なり、配列内の位置を自動的に追跡するため、カウンターを使用したり、関数 sizeof() を呼び出したりする必要はありません。実行のたびに、中括弧内のステートメントが実行され、一時的な PHP 配列ループ変数を通じて現在選択されている配列要素にアクセスします。 仕組みをより深く理解するには、foreach() ループを使用して前の例を書き直すことを検討してください。
<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span class="tag-name">html</span><span class="tag">></span><span> </span><span class="tag"><</span><span class="tag-name">head</span><span class="tag">></span><span class="tag"></</span><span class="tag-name">head</span><span class="tag">></span><span> </span><span class="tag"><</span><span class="tag-name">body</span><span class="tag">></span><span> My favourite bands are: </span><span class="tag"><</span><span class="tag-name">ul</span><span class="tag">></span><span> </span><span class="tag"><?</span><span class="tag-name">php</span><span> </span></span></li><li class="alt"><span><span>// define array $</span><span class="attribute">artists</span><span> = </span><span class="attribute-value">array</span><span> </span></span></li><li><span>('Metallica', 'Evanescence', 'Linkin Park', 'Guns n Roses'); </span></li><li><span>// loop over it // print array elements foreach ($artists as $a) </span></li><li class="alt"><span>{ echo '</span><span class="tag"><</span><span class="tag-name">li</span><span class="tag">></span><span>'.$a; } </span><span class="tag">?></span><span> </span><span class="tag"></</span><span class="tag-name">ul</span><span class="tag">></span><span> </span><span class="tag"></</span><span class="tag-name">body</span><span class="tag">></span><span> </span><span class="tag"></</span><span class="tag-name">html</span><span class="tag">></span><span> </span></span></li></ol>
ループが実行されるたびに、現在選択されている配列要素の値が a の一時変数 $ に配置されます。この変数は、PHP 配列ループ ブロック内のステートメントで使用できます。 foreach() ループは配列内の位置を追跡するためのカウンターを必要としないため、標準の for() ループよりもメンテナンスの必要が少なく、読みやすくなっています。ああ、そうです...追加のプログラミングを必要とせずに、連想配列でも動作します。