見出し画像

【 PHP学習 #6 】 foreach文 FIREへの旅路 ♯456

今回はforeach文を学習します。

まず、foreachとは、英語の「for」と「each」からできています。
「each」は  "おのおのの、めいめいの、各自の、各 " といった意味があります。

この図が非常にわかりやすいです。
これを理解していると、foreach文の役割を理解できます。

https://ejje.weblio.jp/content/each



【 foreach 】

配列の要素の数だけ繰り返しを行う

foreach文では配列の各要素に繰り返し(ループ)処理を実行します。

foreach (配列変数 as 変数){
  実行する処理1;
  実行する処理2;
}


▶︎ 使い方


foreachでは、繰り返しの処理を行います。

下記のコードでは、
$priceから要素をひとつずつ取り出して、$valueに格納し、
$total += $value で、格納された値が、足されていき、
合計金額として$totalecho されます。

<?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文は、正直わかりにくいですね。

構文として、覚えてしまうのも手でしょう。

書いていくうちに理解が深まることもあります!

この記事が気に入ったらサポートをしてみませんか?