- システム開発
- 2017/04/25
PHP foreachが初心者でも書ける!超重要なbreakとcontinueの違いも
プログラミング言語PHPのforeach文について、Web開発経験のある筆者がサンプルコードで丁寧に解説します。
プログラミング初心者向けにPHP foreach文について解説しています。
foreach文を使えば、配列(array)の中の要素の分だけ繰り返し処理をすることができます。(後に解説)
本記事を読めば、PHP foreach文の書き方、連想配列でkeyとvalueを取り出す方法、breakとcontinueが理解できるでしょう。
ぜひ最後まで読んで、PHP foreach文の基本を理解してください。
PHP foreachの書き方
フォーイーチ(foreach)文では、配列の中にある要素の分だけ、繰り返し処理を行いたいときに使います。
foreach文を使うときに必要なものとしては処理を実施する配列と、配列の中身のデータを一時的に格納する変数が必要になります。
それでは、実際の構文を確認してみましょう。
1 2 3 4 5 6 7 8 |
//配列に使う場合 foreach(配列 as 仮変数){ 文 //処理内容 } //連想配列に使う場合 foreach(連想配列 as 仮キー変数 => 仮変数値){ 文 //処理内容 } |
for文、while文でも同じ処理はもちろん可能ですが、配列の内容を順番に取り出すようなケースであればforeach文を使う方がコードがすこしシンプルになります。
その理由は、わかりますか?
for文、while文ではループを終了させるための条件式が必須です。
foreach文で指定するのは、処理をする配列のみでよいため、条件式について考える必要がありません。
次に実際にforeach文を使って配列からデータを取り出すサンプルコードを見てみましょう。
PHP foreachでvalueを取り出そう(配列)
名前の入った配列を定義し、foreach命令で順番に名前を取り出すサンプルコードです。
1 2 3 4 5 6 |
//サンプルコード1 $arr = array("鈴木","高橋","山田"); //配列を定義 foreach($arr as $data){ //foreachで取り出す配列と要素の値を格納する変数を指定する。 print($data); //変数値を表示する($dataは、$arr[x]からコピーしてきたデータが入っている) print("<br>"); //html改行コードを表示をする } |
1 2 3 4 |
//実行結果 鈴木 高橋 山田 |
配列に$arr,仮変数に$dataを指定しています。
foreachで$arr[0],$arr[1],$arr[2]とアクセスされ、その値が都度$dataにいれられて、printで$dataの値が表示されました
この様に条件式などを指定せずとも、配列のデータを順番にとりだすことができす。
それでは、次に連想配列を使ったサンプルコードを実際に見ていきましょう。
PHP foreachでkeyとvalueを取り出そう(連想配列)
連想配列の場合は、先程の「仮変数」の代わりに「仮キー変数 => 仮変数値」を指定することで、連想配列のデータから一組のキーと値が取得できるようになります。
1 2 3 4 5 6 |
//サンプルコード2 $arr = array("りんご"=>"Apple","バナナ"=>"Banana","もも"=>"Peach"); //連想配列を定義 foreach($arr as $key=>$val){ //foreachで取り出す連想配列の指定と、「仮キー変数 => 仮変数値」を定義します。 print($key." ".$val); //$keyと$valに入ったデータを表示する。 print("<br>");//html改行をする。 } |
1 2 3 4 |
//サンプルコード2の実行結果 りんご Apple バナナ Banana もも Peach |
連想配列$arrで定義されたキーの値を$keyにセット、対応する英語データを$valにセット。それらを繰り返してデータが順番に取り出されています。
先程の配列の場合は、「仮変数」でした。連想配列の場合は「仮キー変数と仮変数値」です。
受け取るデータが何かを意識すると覚えやすいです。
PHP foreachにおけるbreak
前項でforeachの構文を使ってデータに順番に全てアクセスする方法について書きました。
ただし、ループ処理を配列の個数分やっていると数の多い配列の場合には処理に時間がかかることになってしまいます。
また、実際には全ての配列要素にアクセスしないで良いケースもありますよね。
そういったケースでは、条件処理によって「break」を実行することでforeachのループ処理から抜けることができます。
次のサンプルコード3を見てみましょう。
配列に名前とテストの結果の点数が入っています。そして、一人でもテストの点数が40未満の人がいたら処理を中断し、「不合格者がいました」と報告します。
※以下のサンプルコードではif文を使用します。
if文があまり理解できていない人はif文について詳しく解説した記事をご覧ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//サンプルコード3 $arr = array(); //連想配列を作成する。 $arr["相沢"] = 99; $arr["田中"] = 28; $arr["山田"] = 70; $arr["高橋"] = 33; foreach ($arr as $name =>$point){//foreachで取り出す連想配列の指定と、「仮キー変数 => 仮変数値」を定義します。 if ($point < 40){ //一人でも欠点者がいれば、処理を中断する。 print "残念ながら不合格者がいました"; break;// foreachのループ処理から抜ける。 } } |
1 2 |
//サンプルコード3の実行結果 残念ながら不合格者がいました |
この様に、目的の情報が見つかったら終了したいというケースが多くあるのです。
PHP foreachにおけるcontinue
先程は、特定の条件の場合にbreak文でループ処理を中断しましたが、特定の周回のみ処理をスキップしたいという時もあります。そのような場合は、「continue」を使いましょう。
では、実際にサンプルコードを見ながら処理を確認してみましょう。
サンプルコード4では、サンプルコード3から少し変わってテストの不合格者一覧リストを作りたいときを想定しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//サンプルコード4 $arr = array(); //連想配列を作成する。 $arr["相沢"] =39; $arr["田中"] = 98; $arr["山田"]=70; $arr["高橋"]=33; print "テストの不合格者:<br>"; foreach ($arr as $name =>$point){//foreachで取り出す連想配列の指定と、「仮キー変数 => 仮変数値」を定義します。 if ($point >= 40){ //合格者はスキップする continue;//以下の処理はスキップし、次のループ処理を行う。 } print($name.":".$point."点"); print("<br>"); } |
1 2 3 4 |
//サンプルコード4の実行結果 テストの欠点者: 相沢:39点 高橋:33点 |
40点以上の合格者を発見した場合は、continueで以降の処理をスキップ(合格者は表示しない)、テストの不合格者の名前と点数を表示しています。
breakではforeachのループ処理ブロックから抜けてしまいしましたが、continue文は、以降の処理をスキップするだけで、foreach文のループ処理は継続的に処理が行われます。
break文とcontinue文の違いについては、きちんと理解しておきましょう。
いかがでしたか?PHP foreachが理解できましたか?foreachはPHPの構文の中でもよく使う構文の1つなので、ぜひ理解しておきましょう!
エンジニアに役立つ目的別講座
Pythonの基本~応用をマスター
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

現役シリコンバレーエンジニアが教えるPython入門講座。Python3の基本を取得できます。
Webサイトのコーディングができるように
ウェブ開発入門完全攻略コース - プログラミング をはじめて学び創れる人へ!未経験から現場で使える開発スキルを習得!

HTML, CSS, Bootstrap, JavaScript, MySQL, Ruby, Ruby on Rails, AWS Cloud9, Git, GitHubを用いたWebアプリケーション開発の方法を総合的に学べます。
AWSを基礎から学ぶ
これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)

AWSの基本資格「AWS 認定ソリューションアーキテクト – アソシエイト試験」を合格を目指し、そのための知識や経験を獲得できるように!
ITプロジェクトの資料作成はお任せ!
手を動かして学ぶITプロジェクトの資料作成!システム開発のドキュメンテーション技術と成果物テンプレート

ITプロジェクトの資料作成を学べる人気講座。フェーズ毎に、どんな資料を作ればいいのか悩んでいる人におすすめ。
関連記事

PHP switch~caseが具体例で初心者でも即わかる!if文との違いも
今回はプログラミング言語PHPのswitch文(switch~case)につい…

PHP 配列の基礎を図で丁寧に解説!要素の追加など知りたい知識が満載!
プログラミング言語PHPにおける配列について、PHP初心者向けにW…

Ruby eachが初心者でも書ける!知っていると便利な知識とは?
プログラミング言語Rubyのeachメソッドを、Ruby初心者向けに解…

Ruby if elseを即理解!頻繁に使う3つの便利な知識も紹介
今回はプログラミング言語Rubyのif else(if文)を扱います。 …
最新情報・キャンペーン情報発信中