まくまくPHPノート
配列をループ処理する (foreach)
2012-02-22

foreach() によるループ処理

下記のようにすると、配列(連想配列)のキーと値を順番に取り出すことができます。 通常の配列の場合は、キーは 0、1、2 といった数値です。

foreach ($arr as $key => $val) {
    print "$key => $val\n";
}

キーが必要ない場合は、以下のように値だけを順に取得することもできます。

foreach ($arr as $value) {
    ...
}

for() で数値キーを使ったループ処理

C/C++ 言語風に、数値インデックス指定によってループ処理を行うこともできます。

$arr = array('AAA', 'BBB', 'CCC');
for ($i = 0, $len = count($arr); $i < $len; ++$i) {
    print "$arr[$i]\n";
}

ちなみに以下のように、条件判断部分で count() を呼んでしまうと、何度も count() が実行されるので効率が悪くなります。

for ($i = 0; $i < count($arr); ++$i) {  // 効率悪い
    print "$arr[$i]\n";
}

多少コードは長くなりますが、前者のように配列サイズを一時変数 ($len) に取得してループさせるのがよいでしょう(というか、そもそも foreach ループを使ったほうがよいですが)。

2012-02-22