Skip to content

PHP_05 「繰り返し」

Last updated on 2019/7/11

繰り返しの処理とは?

繰り返しの処理とは、同じような処理を何回も繰り返したいときに使う処理です。

1~100までを表示したいとき、単純にecho 数字;を100回書く方法でも実現可能ですが、数字を100回表示するという抽象的な捉え方をすれば、もっと簡単に表示することができます。

単純にechoを100回書く場合

<?php
// これでも実現はできるが。。。
echo 1;
echo 2;
echo 3;
...
...
echo 100;

// 100回書くの大変。

繰り返しの処理を用いた場合

<?php
// 繰り返しの処理を使った1 ~ 100 までを表示する処理

for ($i=1; $i <= 100; $i++) { 
    echo $i;
}

// 100回書くより楽

上記のように繰り返しの処理を使えば、自分も楽で人に見やすいコードを書くことができるので、積極的に繰り返しの処理が使える箇所は使っていきましょう。

for

PHPでは、繰り返しの処理を行うためにいくつかの方法があります。その一つがforを使った繰り返しの処理です。

構文は、

for (変数名=初期値; 繰り返す条件式; 1回毎に値を更新する式) {
    繰り返す処理
}

と書き、実際に使うには下記のように使います。

<?php

// 条件が満たされる間は実行される。
// for (変数名=初期値; 条件式; 1回毎に値を更新する式) { 
for ($i=0; $i < 5; $i++) { 
    echo $i;
}
// 012345 と表示される。

繰り返す条件が満たされてる限りは、繰り返します。

なぜ、変数の名前がiなのか?

繰り返し処理には、ijkといった1文字の変数名がよく使われます。他のプログラミング言語でもよく使われており、FORTRANというプログラミング言語に影響されています。

iは、indexの頭文字のiであり、jKはアルファベットでいうとiの次の文字ということでiが使われてたときに使います。よく使うので覚えておきましょう。

while

forのほかにも繰り返しに使えるのがwhileです。構文は、

while (条件式) {
    繰り返す処理
}

と書きます。

この処理で一つ注意が必要なのが、条件式がいつまでも満たされるとずっと繰り返しが起こる、所謂無限ループということについてです。

条件式で使う変数の中身を下記のように繰り返し時に値を更新する処理を入れなければなりません。

<?php

$i = 1;
while ($i <= 100) {
    echo $i;
    $i++;
}

変数iの更新処理を忘れると、いつまでも$i <= 100が成立してしまいます。

foreach

foreachとは、配列や連想配列、オブジェクトを繰り返しの処理で扱うときに便利な方法です。二種類の構文があります。

実際の構文は、下記の通りです。

// キーと値を取りたい場合
foreach (配列 as キー名を入れる変数 => 値を入れる変数) {
    繰り返しの処理
}

// 値だけ取りたい場合
foreach (配列 as 値を入れる変数) {
    繰り返しの処理
}

キーと値を取りたい場合の方法を通常の配列に使うと、indexの番号と値が取れて便利です。

<?php

// foreachで使う配列の宣言
$sweets = array('Applepie', 'Ekrea', 'Cookie', 'Madeleine');

// キーと値を取りたい場合
// foreach (配列 as キー名を入れる変数 => 値を入れる変数) {
foreach ($sweets as $key => $value) {
    echo "$key:  $value";
}

// 値だけ取りたい場合
// foreach (配列 as 値を入れる変数) {
foreach ($sweets as $value) {
    echo $value;
}

for, while, foreachといった繰り返しに使う構文について学びましたが、
どこでなにが適しているかはある程度なれてこないとわからないと思います。
どんどん使って使いどころを覚えていきましょう。

全体のコード

<?php

// 条件が満たされる間は実行される。
// for (変数名=初期値; 繰り返される条件; 1回毎に増減する値) { 
for ($i=0; $i < 5; $i++) { 
    echo $i;
}

$a = 0;
while ($a <= 10) {
    echo $a;
    $a++;
}

// foreachで使う配列の宣言
$sweets = array('Applepie', 'Ekrea', 'Cookie', 'Madeleine');

// キーと値を取りたい場合
// foreach (配列 as キー名を入れる変数 => 値を入れる変数) {
foreach ($sweets as $key => $value) {
    echo "$key:  $value";
}

// 値だけ取りたい場合
// foreach (配列 as 値を入れる変数) {
foreach ($sweets as $value) {
    echo $value;
}