forやforeachを使って配列データにアクセスしてみよう〜PHP入門編〜

こんにちは!フリーエンジニアのヤマシタです。

PHPでは、配列を使用してさまざまな処理が可能です。

この記事では、

・foreach文で配列をループする
・for文で配列をループする
・while文で配列をループする

という基本的な内容から、

・配列の値をループで格納する方法

などの応用的な使い方に関しても解説していきます。

今回はそんな配列のループ方法について、わかりやすく解説します!

foreach文で配列をループする

配列の全ての要素をループで回して取得する場合、foreach文を使用すれば配列を簡単にループで回すことができます。

foreach文は、引数に配列名と配列の要素を取得するための変数を指定します。

foreach( $配列名 as $値)

以下にforeach文を使用して配列をループで回す方法を記述します。

<?php

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

foreach($fruits as $value){
  echo $value;
  echo '<br>';
}

?>
実行結果
apple
orange
melon
banana
pineapple

連想配列をループする方法

連想配列をループする場合は、1次元配列のforeach文と指定方法が異なり、引数を追加する必要があります。

連想配列をforeachで取得するには、連想配列を取得するためのキーと値を両方指定します。

foreach( $配列名 as $キー名 => $値)

以下にforeach文を使用して連想配列をループで回す方法を記述します

<?php

$fruits = [0=>'apple', 1=>'orange', 2=>'melon', 3=>'banana', 4=>'pineapple'];

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

?>
実行結果
key : 0
value : apple
key : 1
value : orange
key : 2
value : melon
key : 3
value : banana
key : 4
value : pineapple

for文で配列をループする

for文で配列を回す場合は、配列の要素数をcount関数で取得して条件式に指定し、値を1つずつインクリメントする方法が基本的な方法です。

for (初期化式; 条件式; 変化式)

以下にfor文を使用して配列をループする方法を記述します。

<?php
$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

for ($i = 0 ; $i < count($fruits); $i++){
  echo $fruits[$i];
  echo '<br>';
}

?>
実行結果
apple
orange
melon
banana
pineapple

連想配列をループする方法

連想配列をfor文で使用するためには、for文の中でlist関数とeach関数を使用する必要があります。

list関数は引数で指定したキーと値を取得し、指定した連想配列のキーと値のペアを返すeach関数を使用して取り出します。

list( $キー, $排列 ) = each( $配列名 )

each関数はPHP7.2.0では非推奨となっています。そのため、よほどのことが無い限りは連想配列のループ処理は、foreach文を使用するようにしましょう。

以下にfor文を使用して連想配列をループする方法を記述します。

<?php

$fruits = [0=>'apple', 1=>'orange', 2=>'melon', 3=>'banana', 4=>'pineapple'];

for ($i = 0 ; $i < count($fruits); $i++){

  list( $key, $value ) = each( $fruits );

  echo 'key : '.$key;
  echo '<br>';
  echo ' value : '.$value;
  echo '<br>';
}

?>
実行結果
key : 0
value : apple
key : 1
value : orange
key : 2
value : melon
key : 3
value : banana
key : 4
value : pineapple

while文で配列をループする

while文で配列を回す場合は、while文の条件式で配列を回すための式を記述する必要があります。

while(条件式):
処理
endwhile;

while文にはさまざまな条件式が使用できますが、for文のように配列の要素数がカウント用変数の値以下だったら、ループ処理を実行するような式を記述するのが一般的です。

しかし、for文のようにカウント用変数を式の中でインクリメントしないので、while文の処理の中で、カウント用変数をインクリメントする必要があります。

以下にwhile文を使用して配列をループする方法を記述します。

<?php

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

$count = 0;
while ($count <= count($fruits)):
  echo $fruits[$count];
  echo '<br>';
  $count++;
endwhile;

?>
実行結果
apple
orange
melon
banana
pineapple

連想配列をループする方法

while文で連想配列を回す場合は、for文で紹介したようにlist関数で引数で指定したキーと値を取得し、指定した連想配列のキーと値のペアを返すeach関数を使用して取り出します。

しかし、上述したようにeach関数はPHP7.2.0では非推奨となっていますで、連想配列はよほどのことが無い限りforeach文を使用するようにしましょう。

以下にwhile文を使用して連想配列をループする方法を記述します。

<?php

$fruits = [0=>'apple', 1=>'orange', 2=>'melon', 3=>'banana', 4=>'pineapple'];

$count = 0;
while (list( $key, $value ) = each( $fruits )):
  echo 'key : '.$key;
  echo '<br>';
  echo ' value : '.$value;
  echo '<br>';

  $count++;
endwhile;

?>
実行結果
key : 0
value : apple
key : 1
value : orange
key : 2
value : melon
key : 3
value : banana
key : 4
value : pineapple

配列の値をループで格納する方法

配列の値をループで格納する方法については、以下の記事で詳細に解説しています。

配列についてもっと詳しく知りたい方へ

配列のさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

まとめ

ここでは、配列の値をループで取得するさまざまな方法について、解説しました。

配列を扱った処理は、実際の開発でもよく使用しますので、この機会にぜひ覚えておきましょう。

もし、配列をループで回す方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説