【PHP】foreach文

Image

foreach文とは

foreach文はwhile文やfor文と同じく繰り返し処理を制御する構文です。
foreach文を使用することで配列や連想配列を簡単に操作することができます。

書式は以下の通りです。

foreach(配列名 as 変数名){
  配列が終わるまで実行する処理
}

配列名には定義済みの配列を指定します。
変数名には繰り返し処理の中で配列の値を格納するための変数を記述します。

ではforeach文を使って簡単なプログラムを書いてみます。

<?php

  $number = array("1","2","3","4","5");

  foreach($number as $value){
    echo $value;
  }

?>


Demo

実行結果はDemoから確認できます。
定義済みの配列numberの値をvalueという変数に渡し、配列が終わるまで値をechoで出力する処理です。
実行結果を確認すると、numberに格納されている値が全て出力されていることが解ります。
これがforeach文の基本となります。
条件を指定することなく配列に値が存在する限り処理を続けることができます。

上記のプログラムでは配列の全ての値を一つずつ変数に持たせて出力する処理を行いました。
続いてはforeach文で配列のキーと値を取り出す方法を紹介します。

foreach文でキーと値を取り出す方法

PHPには連想配列があります。
連想配列は文字列をキーにして値を管理する配列だとお話ししました。
定義済みの連想配列のキーと値を取り出したい場合には以下のように記述します。

for(配列名 as キー変数 => 値変数){
配列が終わるまで実行する処理
}

上記のように書くとキー変数に連想配列のキーが、値変数にはキー変数に関連付けられた値が格納されます。
このキー変数と値変数を使って連想配列の値を取り出します。

<?php

  $person = array(
    "name"    =>  "山田太郎",
    "age"     =>  "20",
    "gender"  =>  "男",
    "height"  =>  "170",
  );

  foreach($person as $key => $value){
    echo $key.":".$value."<br>";
  }

?>


Demo

実行結果のDemoを用意しました。
上記プログラムでは個人の情報を持つ連想配列を定義し、foreach文で連想配列のキーと、キーに関連付けられた値を取り出しています。

では最後にforeach文をネストして多次元配列を操作するプログラムを紹介します。

<?php

  $member = array(
    "山田太郎" => array(
    "age"     =>  "20",
    "gender"  =>  "男",
    "height"  =>  "170",
    ),
    "田中花子" => array(
    "age"     =>  "20",
    "gender"  =>  "女",
    "height"  =>  "160",
    )
  );


  foreach( $member as $key1 => $value1 ){
    echo "■".$key1."<br>";
    foreach( $value1 as $key2 => $value2 ){
      echo $key2.":".$value2."<br>";
    }
  }

?>


Demo

実行結果はデモから確認できます。
多次元配列を定義後、foreach文をネストして配列の値を取り出しています。

処理の流れとしては、

  1. 配列を定義
  2. 最初のforeach文でキーが持つ値をvalue1に格納
  3. echoでkey1の文字列(名前)を出力
  4. value1が持つキーと関連した値をkey2とvalue2に格納
  5. key2とvalue2が存在する間echoで出力
  6. memberの最後まで以上を繰り返す

となります。

配列や連想配列を制御するのにforeach文はとても有効です。
また、while文やfor文と同様にif文等で条件分岐をすることも可能です。
色々な処理の中で使ってみましょう。

SHARE