foreachは配列の要素を取り出す時に使うループ処理で、配列の要素の数分、繰り返し処理をします。構文の書き方は一次元配列のvalueの取り出しと、連想配列のkeyとvalueの取り出し、2種類あります。
//一次元配列のvalueの取り出し
foreach ($array as $value){
実行処理
}
//連想配列のkeyとvalueの取り出し
foreach ($array as $key => $value){
実行処理
}
まず、一次元配列でvalueを表示します。
<?php
$items = array('トマト','キャベツ','ピーマン','レタス');
foreach ($items as $value){
echo $value. '<br>';
}
?>
実行結果は以下になります。
トマト
キャベツ
ピーマン
レタス
一次元配列でkeyとvalueを表示します。
<?php
$items = array('トマト','キャベツ','ピーマン','レタス');
foreach ($items as $key => $value){
echo 'key:' .$key. '、value:' .$value. '<br>';
}
?>
実行結果は以下になります。一次元配列の場合、keyには0から始まる添字がセットされているのがわかります。
key:0、value:トマト
key:1、value:キャベツ
key:2、value:ピーマン
key:3、value:レタス
なお、配列にkey(0から始まる添字)でアクセスすれば、該当のvalueが表示できます。
<?php
$items = array('トマト','キャベツ','ピーマン','レタス');
echo $items[0];
?>
//実行結果
トマト
次に、連想配列でvalueを表示します。
<?php
$list = array(
'トマト' => 100,
'キャベツ' => 120,
'ピーマン' => 80,
'レタス' => 90
);
foreach ($list as $value){
echo $value. '<br>';
}
?>
実行結果は以下になります。keyはechoしていないので表示されません。
100
120
80
90
連想配列でkeyとvalueを表示します。
<?php
$list = array(
'トマト' => 100,
'キャベツ' => 120,
'ピーマン' => 80,
'レタス' => 90
);
foreach ($list as $key => $value){
echo 'key:' .$key. '、value:' .$value. '<br>';
}
?>
実行結果は以下になります。
key:トマト、value:100
key:キャベツ、value:120
key:ピーマン、value:80
key:レタス、value:90
なお、連想配列にkey(文字列)でアクセスすれば、該当のvalueが表示できます。
<?php
$list = array(
'トマト' => 100,
'キャベツ' => 120,
'ピーマン' => 80,
'レタス' => 90
);
echo $list['トマト'];
?>
//実行結果
100
foreach内でcontinueを使うと現在のループの残りの処理をスキップし、次のループの処理へ移ることができます。
<?php
$list = array(
'トマト' => 100,
'キャベツ' => 120,
'ピーマン' => 80,
'レタス' => 90
);
foreach ($list as $key => $value){
if($key == 'ピーマン') {
continue;
}
echo 'key:' .$key. '、value:' .$value. '<br>';
}
?>
実行結果は以下になります。
key:トマト、value:100
key:キャベツ、value:120
key:レタス、value:90
また、foreach内でbreakを使うとループを終了することができます。
<?php
$list = array(
'トマト' => 100,
'キャベツ' => 120,
'ピーマン' => 80,
'レタス' => 90
);
foreach ($list as $key => $value){
if($key == 'ピーマン') {
break;
}
echo 'key:' .$key. '、value:' .$value. '<br>';
}
?>
実行結果は以下になります。
key:トマト、value:100
key:キャベツ、value:120
