foreach コンストラクトの構文は次のとおりです。
foreach ($array_expression as $value) {
statement
}
foreach ($array_expression as $key => $value) {
statement
}
最初の形式は、$array_expression で指定された配列をループします。各ループで、現在の要素の値が $value に割り当てられ、次のループで次の要素にアクセスできるように、内部配列ポインターが 1 つ進められます。
2 番目の形式は、現在の要素のキーが各ループで変数 $key に割り当てられることを除いて、同じことを行います。
上記の foreach 構文は、次の while コンストラクトにも似ています。
while (list(, $value) = each($array_expression)) {
statement
}
while (list($key, $value) = each($array_expression)) {
statement
}
for ループでも、次の構文を使用して、配列のすべての要素を処理およびループするために使用できます。
$count = sizeof($arr_expression);
for ($i = 0; $i < $count; $i++) {
$value = $arr_express[$i];
statement
}
for ($i = 0, $item = ''; false != ($value = $arr_expression[$i]); $i++) {
statement
}
「foreach」のネストされたループを使用して、多次元配列にアクセスすることもできます。配列の例と、その値データにアクセスする方法を次に示します。例えば:
foreach ($array_expression as $arr_value) {
foreach ($array_value as $value) {
statement
}
}
配列にアクセスするコードの例を次に示します。
$contents = array(
"website_1" => array("name" => "StackOverFlow",
"url" => "http://www.stackoverflow.com",
"favorite" => "yes"),
"website_2" => array("name" => "Tip and Trick",
"url" => "http://www.tipandtrick.net",
"favorite" => "yes")
);
データを取得するために、プログラマーは次の構文を使用して値に直接つながるキーを指定できます。これにより、「My Digital Life」が出力されます。
echo $contents['website_1']['name'];
ただし、上記の構文は、大きな配列を扱う場合や、キーと値の名前が動的に変更される場合には実用的ではなくなります。この場合、「foreach」関数を使用して、配列に再帰的にアクセスできます。
foreach ($contests as $key => $list) {
echo "Website No.: " . $key . "\n";
echo "Name: " . $list['name'] . "\n";
echo "URL: " . $list['url'] . "\n";
}
出力は次のようになります。
Website No.: website_1
Name: StackOverFlow
URL: http://www.stackoverflow.com/
Website No.: website_2
Name: Tip and Trick
URL: http://www.tipandtrick.net/