【 PHP学習 #6 】 foreach文 FIREへの旅路 ♯456
今回はforeach文を学習します。
まず、foreachとは、英語の「for」と「each」からできています。
「each」は "おのおのの、めいめいの、各自の、各 " といった意味があります。
この図が非常にわかりやすいです。
これを理解していると、foreach文の役割を理解できます。
【 foreach 】
foreach文では配列の各要素に繰り返し(ループ)処理を実行します。
foreach (配列変数 as 変数){
実行する処理1;
実行する処理2;
}
▶︎ 使い方
foreachでは、繰り返しの処理を行います。
下記のコードでは、
$priceから要素をひとつずつ取り出して、$valueに格納し、
$total += $value で、格納された値が、足されていき、
合計金額として$total が echo されます。
<?php
$price = [100,300,500,1000]; // 金額の配列
$total = 0; // 合計額
foreach ($price as $value) {
var_dump($value);
$total += $value; // 金額を合算する
}
echo("合計金額:$total");
ここで行われている処理は、
$price = array(100,300,500,1000)
この配列の中身が、順に$valueに格納されて$totalに溜まっていくという感じです。
100 + 300 + 500 +1000 の結果が、$totalの値になります。
【 連想配列からバリューのみ表示する 】
▶︎ 書き方
<?php
// foreach
$members = [
'name' => '本田',
'height' => 170,
'hobby' => 'サッカー'
];
//バリューのみ表示
foreach($members as $member){
echo $member;
}
$members という連想配列から、バリュー(値)を順に取り出して、
$memberに格納します。
echoすると、$membersの値が順に表示されます。
この処理は、配列の要素の数だけ繰り返して終了となります。
【 キーとバリューそれぞれ表示 】
連想配列からキーとバリューの両方を取り出す構文です。
foreach (配列変数 as キー変数 => 値変数){
実行する処理1;
実行する処理2;
}
▶︎ 書き方
先ほどのコードに、追加します。
<?php
// 複数の値 foreach
$members =[
'name' => '本田',
'height' => 170,
'hobby' => 'サッカー'
];
//バリューのみ表示
foreach($members as $member){
echo $member;
}
echo '<br>';
//キーとバリューそれぞれ表示
foreach($members as $key => $value){
echo $key . 'は' . $value . 'です';
}
このコードによって、連想配列のキーが $keyに格納されます。
foreach($members as $key => $value){
echo $key . 'は' . $value . 'です';
}
考え方としては、
$members という配列を、 $key => $value という形で展開するという感じです。
連想配列のキーとバリューがセットで取り出されて、順にechoされます。
【 多段階の配列を展開する場合の書き方 】
$members という配列のなかの
'本田' というキーにも、配列があります。
また、
$membersの中には、'香川'というキーもあり、その中にも配列があります。
このような多段階層の配列から要素を取り出す方法です。
▶︎ 書き方
$members_2 = [
'本田' => [
'height' => 170,
'hobby' => 'サッカー'
],
'香川' => [
'height' => 165,
'hobby' => 'サッカー'
]
];
foreach ($members_2 as $member_1) {
foreach ($member_1 as $member)
echo $member;
}
▶︎ 解説
foreachの中に、foreachを書きます。
foreach ($members_2 as $member_1) {
foreach ($member_1 as $member)
echo $member;
}
$members_2 という配列を
$member_1 に格納し、
さらに、$member_1 を $member に格納します。
そして、$member をechoします。
▶︎ キーとバリューそれぞれ表示
多段階層の配列からもキーとバリューをセットで取り出す構文は
このように書きます。
$members_2 = [
'本田' => [
'height' => 170,
'hobby' => 'サッカー'
],
'香川' => [
'height' => 165,
'hobby' => 'サッカー'
]
];
foreach ($members_2 as $member_1) {
foreach ($member_1 as $key => $value){
echo $key . 'は' . $value . 'です';
}
}
ポイントはこの部分です。
foreach ($members_2 as $member_1) {
foreach ($member_1 as $key => $value){
echo $key . 'は' . $value . 'です';
}
}
【 まとめ 】
foreach文について、学びました。
コードを見て、どのような処理が行われているかを理解すると、すっきりとわかるのですが、
foreach文は、正直わかりにくいですね。
構文として、覚えてしまうのも手でしょう。
書いていくうちに理解が深まることもあります!
この記事が気に入ったらサポートをしてみませんか?