おぼえがき

過ちては則ち改むるにうんぬんかんぬん

foreach文について(PHP)

f:id:feci:20210727001932j:plain

PHP7

 

PHP7.4.1におけるfor文について。

<?php

//①for文を使わない連想配列の繰り返し処理
$aaa = [
  'a' => 'あいうえお',
  'ka' => 'かきくけこ',
  'sa' => 'さしすせそ',
  'ta' => 'たちつてと'
];

echo "$aaa[a]\n";  //あいうえお
echo "$aaa[ka]\n"//かきくけこ
echo "$aaa[sa]\n"//さしすせそ
echo "$aaa[ta]\n"//たちつてと


//②①をforeach文で作った場合
$aaa = [
  'a' => 'あいうえお',
  'ka' => 'かきくけこ',
  'sa' => 'さしすせそ',
  'ta' => 'たちつてと'
];

foreach ($aaa as $bbb) { //$aaaから値を先頭から1つずつ取り出して$bbbに代入する
  echo $bbb. "・";        //あいうえお・かきくけこ・さしすせそ・たちつてと・
}


//③②のforeach文からさらにキーワードも取り出すパターン
$aaa = [
  'a' => 'あいうえお',
  'ka' => 'かきくけこ',
  'sa' => 'さしすせそ',
  'ta' => 'たちつてと'
];

foreach ($aaa as $bbb => $ccc) { //$aaaのキーワードを$bbbに、値を$cccに代入する
  echo "\n". $bbb. ":". $ccc;   //a:あいうえお ka:かきくけこ…
}

foreach文は、配列を繰り返し処理するための便利な方法です。

 

上記プログラムのような連想配列では、インデックスが存在しないのでfor文で繰り返しの処理をおこなうことは困難です。

そのような場合にforeach文は役に立ちます。

 

上記②のプログラムは、$aaaの連想配列の先頭から値を抜き出して$bbbに順次代入していきます。

foreach文にはfor文のような更新処理は必要ありません。

先頭から値を順次抜き出して、末尾の値を取り出したらそこで勝手にプログラムは終了されます。

 

③のプログラムは、foreach文のもうひとつのパターンです。

条件式に「$aaa as $bbb => $ccc」と記述することで、$aaaのキーワードを$bbbに格納し、そのキーワードに紐づいた値を$cccに格納します。

 

 

foueach文の定形は以下のとおりです。

 

foreach ($〇〇 as $△△ => $◇◇) {
    条件を満たした際の処理;
}

 

 

なお、foreach文であつかえるのはArray型の値とオブジェクトだけです。

str型などの他のデータ型を条件式に指定すると、PHPはWarningまたはerrorを吐いてしまいます。

 

 

以上です。