[PHP]forやforeachを使った繰り返し処理の徹底解説|繰り返し処理を使いこなせるようになろう!
- システム
エンジニア - 繰り返し処理にもさまざまな関数がありますが、どんなことに注意すればいいのでしょうか?
- プロジェクト
マネージャー - どれも「なんとなく」で使うと意図しない不具合が生じるので、それぞれの特徴を詳しく見ていきましょう。
[PHP]forやforeachを使った繰り返し処理の徹底解説
今回は、PHPでのforやforeachを使った繰り返し処理について説明します。基本的な使い方から、配列や連想配列の繰り返し処理、continueやbreak、HTMLの繰り返し処理について紹介します。
PHPでのファイル名取得に興味のある方はぜひご覧ください。
基本的な使い方
PHPのfor文の基本的な使い方を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
echo "インクリメント\n";
for ($i = 1; $i <= 10; $i++) {
echo "$i\n";
}
echo "2ずつ加算\n";
for ($i = 1; $i <= 10; $i+=2) {
echo "$i\n";
}
echo "デクリメント\n";
for ($i = 10; $i > 0; $i--) {
echo "$i\n";
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
インクリメント
1
2
3
4
5
6
7
8
9
10
2ずつ加算
1
3
5
7
9
デクリメント
10
9
8
7
6
5
4
3
2
1
|
このように、PHPではfor文を使って繰り返し処理ができます。
配列
PHPでの配列に対する繰り返し処理を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// 配列の宣言
$color = ['red', 'green', 'blue', 'yellow', 'black'];
// forで繰り返し処理
// countは事前に実施しておくべき
$count = count($color);
for ($i = 0 ; $i < $count; $i++){
echo "$color[$i]\n";
}
// foreachで繰り返し処理
foreach($color as $value){
echo "$value\n";
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
|
red
green
blue
yellow
black
red
green
blue
yellow
black
|
for文のcountはループの前に実行しておくようにしましょう。for文の中に記述すると、ループのたびにcountを計算するので、無駄なロジックが発生します。for文よりもforeach文の方が処理がシンプルです。
2次元配列の繰り返し処理を紹介します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$array = [
[1, 2, 3, 4, 5],
["a", "b", "c", "d", "e"],
["one", "two", "three", "four", "five"]
];
print_r($array);
// foreachで2次元配列の表示
foreach($array as $row){
foreach($row as $data){
echo "$data ";
}
echo "\n";
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
[1] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
)
[2] => Array
(
[0] => one
[1] => two
[2] => three
[3] => four
[4] => five
)
)
1 2 3 4 5
a b c d e
one two three four five
|
このようにPHPでは、配列に対してfor文やforeach文で繰り返し処理ができます。
連想配列
PHPでの連想配列に対する繰り返し処理を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
|
// 連想配列の宣言
$color = ['red'=>'赤', 'green'=>'緑', 'blue'=>'青', 'yellow'=>'黄色', 'black'=>'黒'];
// foreachで繰り返し処理
foreach($color as $key => $value){
echo "key:$key, value:$value\n";
}
|
実行結果は以下のようになります。
1
2
3
4
5
|
key:red, value:赤
key:green, value:緑
key:blue, value:青
key:yellow, value:黄色
key:black, value:黒
|
このようにPHPでは、連想配列に対して繰り返し処理ができます。
continue
繰り返し処理をスキップするcontinueについて紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
|
for ($i = 1; $i <= 10; $i++) {
// iが5の場合にループをスキップ
if($i == 5){
continue;
}
echo "$i\n";
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
|
1
2
3
4
6
7
8
9
10
|
continueを使用することで、ループ処理がスキップされていることが分かります。
break
繰り返し処理を中断するbreakについて紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
|
for ($i = 1; $i <= 10; $i++) {
// iが5の場合にループをスキップ
if($i == 5){
break;
}
echo "$i\n";
}
|
実行結果は以下のようになります。
1
2
3
4
|
1
2
3
4
|
breakを使用することで、ループ処理が中断されていることが分かります。2次元配列に使用した場合は、当該ループを中断します。
HTML
PHPでのHTMLの繰り返し処理を紹介します。ここでは、tableの要素をforeachで出力します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<?php
$table= array(
array("a1", "a2", "a3"),
array("b1", "b2", "b3")
);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title></title>
</head>
<body>
<table border=1>
<?php foreach($table as $row){ ?>
<tr>
<?php foreach($row as $cel){ ?>
<td><?= $cel?></td>
<?php } ?>
</tr>
<?php } ?>
</table>
</body>
</html>
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title></title>
</head>
<body>
<table border=1>
<tr>
<td>a1</td>
<td>a2</td>
<td>a3</td>
</tr>
<tr>
<td>b1</td>
<td>b2</td>
<td>b3</td>
</tr>
</table>
</body>
</html>
|
PHPの繰り返し処理がHTMLとして展開されていることが分かります。
- システム
エンジニア - Breakできない場合はfor文が有効なんですね。
- プロジェクト
マネージャー - 古いブラウザでは使用できない関数や順不同で処理してしまう関数もありますので、それぞれの特徴をしっかり覚えておきましょう。
まとめ
いかがでしたでしょうか。PHPでのforやforeachを使った繰り返し処理について説明しました。基本的な使い方から、配列や連想配列の繰り返し処理、continueやbreak、HTMLの繰り返し処理について紹介しました。
ぜひご自身でPHPのソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)