【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匹目Pochi7/24Maltipoo
2匹目Leo11/05Golden retriever
3匹目Sora3/24Dachshund

実行結果

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