| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
foreach(PHP 4, PHP 5, PHP 7) foreach は、配列を反復処理するための便利な方法です。 foreach が使えるのは配列とオブジェクトだけであり、 別のデータ型や初期化前の変数に対して使うとエラーになります。 この構造には二種類の構文があります。 foreach (array_expression as $value) 文 foreach (array_expression as $key => $value) 文 最初の形式は、array_expressionで指定した配列に 関してループ処理を行います。各反復において現在の要素の値が $valueに代入され、内部配列ポインタが一つ前に 進められます。(よって、次の反復では次の要素を見ることになります。) 2番目の形式は、さらに各反復で現在の要素のキーを変数 $keyに代入します。 オブジェクトの反復処理をカスタマイズ することもできます。
ループの中で配列の要素を直接変更したい場合は、 $value の前に & をつけます。こうすると、変数には リファレンス が代入されることになります。
<?php 警告
foreach ループを終えた後でも、 $value は配列の最後の要素を参照したままとなります。 unset() でその参照を解除しておくようにしましょう。 さもないと、次のような目に遭うことになるでしょう。
<?php PHP 5.5.0 より前のバージョンでは、$value の参照は、ループ処理される配列が参照可能である場合 (すなわち、 変数である) のみ使用可能です。次のコードは、PHP 5.5.0 以降でしか動作しません。
<?php
既にご存知かと思いますが、以下の文は機能的に等価です。
<?php 以下の文も機能的に等価です。
<?php 使用法を示すためにその他の例を示します。
<?php ネストした配列の list() による展開(PHP 5 >= 5.5.0, PHP 7) PHP 5.5 からは、配列の配列の反復処理ができるようになりました。 値として list() を渡すと、 ネストした配列をループ変数に展開できます。 例を示します。
<?php 上の例の出力は以下となります。 A: 1; B: 2 A: 3; B: 4 list() で指定する要素数を、ネストした配列の要素数より少なくしてもかまいません。 その場合は、配列の残りの要素は無視されます。
<?php 上の例の出力は以下となります。 1 3 list() で指定した変数を埋めるだけの要素が足りないときには、notice が発生します。
<?php 上の例の出力は以下となります。 Notice: Undefined offset: 2 in example.php on line 7 A: 1; B: 2; C: Notice: Undefined offset: 2 in example.php on line 7 A: 3; B: 4; C: 変更履歴
|
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「foreach」をGoogle検索
|