ITHACK
~ みんなのIT部門 ~

【PHP】foreach文(繰り返し処理) – 配列の値とキーを1つずつ取り出す

foreach文は配列の値とそのキーを一緒に取得することができます。

ここではその方法について解説します。

なお、foreach文と配列については次の記事をご覧ください。

  • foreach文で値とキーを一緒に取得する方法

foreach文と配列

foreach文は配列から値を1つずつ取り出して、繰り返し処理を行う仕組みです。
値と一緒にキーも取り出すことができます。

基本構文

foreach文の基本構文は次のようになります。

foreach( $配列名 as $変数名(キー) => $変数名(値) ) {
    // 処理1
    // 処理2
    // ・・・・・・・・
}

値のみ取り出すforeach文に比べ、$変数名(キー)=>が増えています。
=>はダブルアロー演算子と呼ばれる演算子です。

サンプルコード

配列のキーが数値(インデックス)の場合と文字列の場合のサンプルコードをご覧ください。

キーが数値(インデックス)の場合

<?php

$fruits = [
    'Apple',
    'Orange',
    'Grape',
    'Melon',
];

foreach( $fruits as $key => $value ) {
    echo $key." : ".$value."\n";
}

?>
0 : Apple
1 : Orange
2 : Grape
3 : Melon

$keyにキーが、$valueに値を記憶していることが実行結果から分かります。

キーが文字列の場合

キーが文字列、つまり連想配列の場合もキーを一緒に取り出すことができます。

<?php

$fruits = [
    'Apple'     => 'りんご',
    'Orange'    => 'みかん',
    'Grape'     => 'ぶどう',
    'Melon'     => 'メロン',
];

foreach( $fruits as $key => $value ) {
    echo $key." : ".$value."\n";
}

?>
Apple : りんご
Orange : みかん
Grape : ぶどう
Melon : メロン

こちらも$keyにキーが、$valueに値を記憶していることが実行結果から分かります。

演習問題

問題1

次の実行結果になる猫の情報を出力するプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 猫の情報は連想配列を使って記憶する
  • 連想配列のキーは'name''birthday''type'とする
  • 連想配列をforeach文で出力する
name : Tama
birthday : 4/24
type : Munchkin

問題2

次の実行結果になる犬の情報を出力するプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 犬の情報は多次元配列$dogsに記憶
  • 犬の情報は名前、誕生日、種類の3つ
  • 犬の情報は表のとおり
  • 犬の情報は多次元配列をforeach文で出力する
名前 誕生日 種類
1匹目 Pochi 7/24 Maltipoo
2匹目 Leo 11/05 Golden retriever
3匹目 Sora 3/24 Dachshund
0 ----------
name : Pochi
birthday : 7/24
type : Maltipoo

1 ----------
name : Leo
birthday : 11/05
type : Golden retriever

2 ----------
name : Sora
birthday : 3/24
type : Dachshund

まとめ

foreach文は配列のキーと値を一緒に取り出しながら、繰り返し処理を行うことができます。
特に連想配列ではキーも一緒に使うことがありますので、覚えておきましょう。