PHPのif文, for文, while文, swich文について

プログラミングは条件分岐を行いながら組み立てるものです。

例えば、

  • Aボタンを押したらこの処理。
  • チェックに入力があればこの処理。
  • 入力された年齢が18以上ならこの処理。

こういった条件分岐を行う上で必要になってくるのが、if や for などの構文です。

これでにより、条件で処理を分けたり、同じ処理を指定した回数ループしたり出来ます。

PHPに限らずJavaやRuby、JavaScriptにも同じような分岐はあります。

目次

if文による条件分岐

if文は条件を分岐するための構文です。

実際にコーディングするときにもかなり使います。

$age = 20;
if ($age >= 20) {
    echo '成人です。';
}

上の例は、$age(年齢)が20以上だったら「成人です。」というメッセージを表示するコードです。

1行目の $age = 20; は直接20という数値を代入していますが、画面で入力した値をセットしたりDBから取得した値をセットして使います。

 

if は「~だったら」という条件分岐ですが、「~だったら。そうでなかったら」の「そうでなかったら」の部分も書くことが出来ます。

$age = 20;
if ($age >= 20) {
    echo '成人です。';
} else {
    echo '成人ではありません。';
}

このように else を使うことで、条件に当てはまらなかった場合の処理を記述出来ます。

例では、20以上でなかったら「成人ではありません。」というメッセージを表示するコードです。

 

そして、else if という分岐もあり、これは「Aだったら。Aで無くBだったら。AでもBでもなかったら」の「Aで無くBだったら。」の部分を書くことが出来ます。

$age = 18;
if ($age >= 20) {
    echo '成人です。';
} else if ($age >= 18) {
    echo '成人ではありませんが、車の免許はとれます。';
} else {
    echo '成人ではありません。';
}

このように書くことで、「成人では無いが、18歳以上なら」という条件分岐が出来ます。

for文による処理のループ

for文はループ処理に使います。

次にwhile文を紹介しますが、僕はfor文のほうが好きです。

例えば下のコードだと、$i が 0 から 19 (20未満)になるまでループします。

$age = 20;
for ($i = 0; $i < $age; $i++) {
    echo $i;
}

[aside type=”normal”]for (初期化; 条件; 変化;)[/aside]

と記載します。

初期化は、ループをカウントする変数を定義するのが一般的です。

ここで定義した変数はその for 文内でしか使えません。

条件は、どこまでループするのかを定義します。

この条件が満たされればループは終了します。逆に満たされなければ無限にループし続けます。

変化は、1回ループが完了する毎に実行されます。

 

for文には continue と break というものがあります。

continue

continueは、ループ内の処理を、そのループに限り終了させ、変化; を実行した後次のループ処理にはいります。

$age = 20;
for ($i = 0; $i < $age; $i++) {
    if ($i == 5) {
        continue;
    }
    echo $i;
}

上の例だと、i が 5 のときだけ i の値を表示せず、ループを続行することになります。

break

breakは、そのループ自体を終了し、次の処理に移ります。

$age = 20;
for ($i = 0; $i < $age; $i++) {
    if ($i == 5) {
        break;
    }
    echo $i;
}

上の例だと、i が 5 になったときにループを終了します。

結果は、0, 1, 2, 3, 4 を出力し、5のときに break して$iの値を出力せず、6以降は処理しません。

例えばチームメンバーのリストの中からリーダーを探す処理をしたとき、メンバーを全てループしつつ、役職がリーダーだったらbreak で終了するような感じで使います。

while文による処理のループ

先ほど説明した for 文と同様にループ処理を行うための構文です。

どちらが軽いとかあまり意識しないで大丈夫です。

大昔はかなり意識してたみたいですが、最近はサーバーの性能も良いのであまり軽さは求められないです。もちろん軽いプログラムのほうが良いですが。

上の for 文と同様のことを while 文で書くと下のコードのようになります。

$age = 20;
$i = 0;
while ($i < $age) {
    echo $i;
    $i++;
}

while 文には do while という書き方もあり、上の例と同じようなものは下のコードのように書きます。

$age = 20;
$i = 0;
do {
    echo $i;
    $i++;
} while ($i < 10);

何が違うのかと言うと、先に1度ループ内の処理をして、条件を満たしていれば次のループもするところです。

上のほうのコードの場合は、age が 0 の場合は1度もループ内処理をすることはありません。

 

while文にも continue と break があります。

continue と break の動きは for 文のときと同じです。

switch文による条件分岐

switdh文はif文のように値によって条件分岐できる構文です。

僕はあまり使いませんが。

$age = 20;
switch ($age) {
    case 20:
        echo '成人しました。';
    case 18:
        echo '車の免許がとれるようになりました。';
        break;
    default:
        echo 'その他';
        break;
}

上のコードのように case で指定した変数内の値が何かを指定し、一致すればその後の処理が行われます。

default は、どの case にも当てはまらなかった場合に実行されます。

上の例をご覧頂くと case 20: の中には break がありません。

case 18: の中には break があります。

これは例えば age の値が20だった場合には、case 20 を実行した後 case 18 も実行することになります。

このように break を処理するまで、次の条件の処理も行うところが if 文との違いかと思います。

しかし、実際の現場ではあまり使われません。

バグが出やすいからだと思います。

僕が昔携わっていた300人規模のプロジェクトでは switch 文はコーディングルールで禁止でした。

まとめ

基本的には条件分岐とループがあることが分かればよいです。

書き方はG先生に聞けばたくさんサンプルが出てきます。

while文はまだ使うとしても switdh文はほぼ見かけません。

ifとforを知っていれば問題なくプログラミングは出来ます。

この記事を書いた人

ライターのプロフィールが入ります。このライター情報を入れたくない場合は管理画面の ユーザー > あなたのプロフィールの「プロフィール情報」を未入力にすれば表示されません。逆に「プロフィール情報」を入力することでライター情報を表示できます。

コメント

コメントする

CAPTCHA


目次
閉じる