4.if文を使ってみよう

今回は、プログラミングで頻繁に使用するif文を解説します。

その前に、trueとfalse、比較演算子について知っておく必要があるので先にそれらの説明からします。

比較演算子

数学には「=」(等しい)、「>」「<」「≧」「≦」(不等号)がありますが、プログラミングでも二つの値を比較することができます。

index.phpを以下のように書き換えてください。

sample/index.php
<?php

$num1 = 5;
$num2 = 5;

var_dump($num1 === $num2);

var_dumpの結果、bool(true)が出力されます。

2つの値を比較して、真であればtrue、偽であればfalseになります。true(真)とfalse(偽)は、boolean(bool)という型です。

===は等しいかどうか比較する比較演算子で、等しければtrue、等しくなければfalseになります。

上記のコードでは、$num1と$num2には同じ値が入っているので、===で比較するとtrueになります。

sample/index.php
<?php

$num1 = 5; // 型がint
$num2 = '5'; // 型がstring

var_dump($num1 === $num2); // false
var_dump($num1 == $num2); // true

=が2つの場合は、型が違っていても同じ数であればtrueになります。=が3つの場合はより厳密な比較が行われ、型が違うとfalseになります。

var_dump(0 == false); // true
var_dump(0 === false); // false

=が2つの場合、0とfalseの比較でtrueを返します。そうすると、意図せぬバグを産む可能性があるので、できるだけ===を使った方が良いでしょう。

逆に、値が一致しないかどうかを判定する比較演算子もあります。

var_dump(0 !== 1); // true

!==は「左と右が同じではない」という意味になります。

var_dump(0 != 1); // true

!=も同様に、一致しない場合にtrueになります。==のように、緩い比較になります。

var_dump(0 != false); // false

!=の場合は、0とfalseが同じだと評価されfalseになります。

sample/index.php
<?php

$num = 6;

var_dump($num > 5);

>は、左の値が右の値より大きいかを比較します。$num(6)は5より大きいのでtrueになります。

sample/index.php
<?php

$num = 6;

var_dump($num < 5);

<にすると、$numは5より大きいのでfalseになります。

sample/index.php
<?php

$num1 = 6;
$num2 = 5;

var_dump($num1 >= 5); // true
var_dump($num2 >= 5); // true
var_dump($num2 > 5); // false

>=<=の場合は、その数字を含みます。数学の「≧」「≦」と同じですね。

if文を使ってみよう

次に、if文を実際に使ってみましょう。

sample/index.php
<?php

$num = 6;

if ($num > 5) {
    echo '数字は5より大きいです。';
}

ブラウザで見ると、「数字は5より大きいです。」と表示されたと思います。

if文は括弧()の中を評価して、trueであれば中括弧{}内の処理を行います。

次に、$numを2に書き換えてみましょう。

sample/index.php
<?php

$num = 2;

if ($num > 5) {
    echo '数字は5より大きいです。';
}

$num > 5はfalseになるので、括弧内のコードは実行されず、テキストは何も表示されません。

次に、コードを以下のように書き換えてみてください。

sample/index.php
<?php

$num = 2;

if ($num > 5) {
    echo '数字は5より大きいです。';
} else {
    echo '数字は5以下です。';
}

このようにすると、ブラウザに「数字は5以下です。」と表示されます。

elseの後に中括弧で囲まれたコードは、if文がfalseだった場合に実行されます。

次に、コードを以下のように書き換えてみてください。

sample/index.php
<?php

$num = 2;

if ($num > 5) {
    echo '数字は5より大きいです。';
} elseif ($num = 2) {
    echo '数字は2です。';
} else {
    echo '数字は5以下です。';
}

上のif文がfalseだった場合、次にelseifの判定を行い、trueであればそのコードが実行されます。

ifもelseifもfalseだあった場合、最後のelseのコードが実行されます。

sample/index.php
<?php

$num = 2;

if ($num > 5) {
    echo '数字は5より大きいです。';
} else if ($num = 2) {
    echo '数字は2です。';
}

elseifは、else ifと書くこともできます。else ifと書いても結果は同じです。

if文は、以下のようにコロン(:)を使った書き方もできます。

sample/index.php
<?php

$num = 2;

if ($num > 5) :
    echo '数字は5より大きいです。';
elseif ($num = 2) :
    echo '数字は2です。';
endif;

別の講座で説明しますが、この書き方は、HTMLにPHPを書く時に便利です。

ただし、上記のようなコロンを使った書き方の場合、else ifは使えません。

if ($num > 5) :
    echo '数字は5より大きいです。';
else if ($num = 2) : // ここでエラーが発生する
    echo '数字は2です。';
endif;

ですので、中括弧({})とコロン(:)の両方使えるelseifを使うのが無難です。

複数の条件

if文の中には複数の条件を入れることができます。

sample/index.php
<?php

$num = 5.5;

if ($num > 4 && is_int($num)) {
    echo '4より大きい整数です。';
}

(条件A && 条件B)の場合、条件Aと条件Bの両方がtrueでなければ処理は実行されません。

is_intは、型が整数(int)かどうかを判定する関数です。5.5は整数ではななく浮動小数点数(float)という型なので、is_int($num)はfalseになり処理は実行されません。

次に、以下のように書き換えてみてください。

sample/index.php
<?php

$num = 5.5;

if ($num > 4 || is_int($num)) {
    echo '4より大きい、または整数です。';
}

ブラウザを確認すると、「4より大きい整数です。」と表示されます。

(条件A || 条件B)の場合、条件Aか条件Bのどちらかがtrueであれば処理が実行されます。

上記コードは$num > 4がtrueなので、処理が実行されます。

まとめ

  • if文は、括弧()内の中身を判定し、trueであればコードを実行する
  • elseは、ifの括弧()内がfalseだった場合に実行される
  • elseifは、ifの括弧()内がfalseだった場合に判定を行う