【独学】はじめてのWebプログラミング – 5.3 PHPの基礎③

if文

基本構文

if文とは文字通り、「もしxxxだったら」という意味で、条件に当てはまったときに任意の命令を行うことができます。
例えば、以下のように書きます。

htdocs/PHP/test.php

<?php

$number = 1;

// if文の例①
if ($number == 1) {
    echo 'Hello';
}

// if文の例②
if ($number == 10) {
    echo 'World';
}

?>
ブラウザ

このように、if文は「if (条件式) { 実行したい命令 }」のような構文になります。
条件式が満たされているかを判定し、満たされた場合のみ、実行したい命令が実行されます。

if文の例①の条件式では、変数$numberと「1」が同じであるかを判定しています。$numberには「1」が格納されていますから、この条件式は満たされます。よって、「echo ‘Hello’;」が実行されます。

if文の例②の条件式では、変数$numberと「10」が同じであるかを判定しています。$numberには「1」が格納されていますから、この条件式は満たされません。よって、「echo ‘World’;」は実行されません。

if~else文

if文は「もしxxxだったら」という意味でした。
if~else文は、「もしxxxだったら、またはxxxだったら」のように、条件式を複数書くことができます。
例えば、以下のように書きます。

htdocs/PHP/test.php

<?php

$number = 1;

// if~else文の例①
if ($number == 100) {
    echo '値は100です';
} elseif ($number == 10) {
    echo '値は10です';
} elseif ($number == 1) {
    echo '値は1です';
} else {
    echo 'どれにも該当しませんでした';
}

echo '<br>';

$number = 500;

// if~else文の例②
if ($number == 100) {
    echo '値は100です';
} elseif ($number == 10) {
    echo '値は10です';
} elseif ($number == 1) {
    echo '値は1です';
} else {
    echo 'どれにも該当しませんでした';
}

?>
ブラウザ

「if (条件式) {}」は、「もしxxxだったら」という意味です。
「elseif (条件式) {}」は、「またはxxxだったら」という意味です。elseifは複数書くことができます。
「else {}」は、「どの条件も満たさなかったら」という意味です。

if~else文の例①では、$numberには「1」が格納されていますから、「elseif ($number == 1)」の条件式を満たし、「echo ‘値は1です’;」が実行されました。

if~else文の例②では、$numberには「500」が格納されていますから、どの条件も満たさず、「else」すなわち「echo ‘どれにも該当しませんでした’;」が実行されました。

いろいろな条件式

ここまでは、条件式として「==」(等しいかどうか)を見てきました。
PHPの条件式には、これ以外にも以下があります。

条件式意味構文の例
a == baとbが等しいif (a == b) { 実行したい命令 }
a != baとbが等しくないif (a != b) { 実行したい命令 }
a < baはbより小さいif (a < b) { 実行したい命令 }
a <= baはb以下if (a <= b) { 実行したい命令 }
a > baはbより大きいif (a > b) { 実行したい命令 }
a >= baはb以上if (a >= b) { 実行したい命令 }

例えば、以下のように書きます。

htdocs/PHP/test.php

<?php

$a = 1;
$b = 2;

// 条件式(a != b)の例
if ($a != $b) {
    echo 'aとbは等しくありません';
}

echo '<br>';

$a = 1;
$b = 10;

// 条件式(a < b)の例
if ($a < $b) {
    echo 'aはbより小さいです';
}

echo '<br>';

$a = 1;
$b = 1;

// 条件式(a <= b)の例
if ($a <= $b) {
    echo 'aはb以下です';
}

echo '<br>';

$a = 10;
$b = 1;

// 条件式(a > b)の例
if ($a > $b) {
    echo 'aはbより大きいです';
}

echo '<br>';

$a = 1;
$b = 1;

// 条件式(a > b)の例
if ($a >= $b) {
    echo 'aはb以上です';
}

echo '<br>';

?>
ブラウザ

複数の条件式

if文では、「if (条件A かつ 条件B)」や「if (条件A または 条件B)」のように、条件式の箇所には複数の条件を書くことができます。

「if (条件A かつ 条件B)」は「if (条件A && 条件B)」のように書きます。
「if (条件A または 条件B)」は「if (条件A || 条件B)」のように書きます。

例えば、以下のように書きます。

htdocs/PHP/test.php

<?php

$a = 1;
$b = 1;

// 条件式(&&)の例
if (($a == 1) && ($b == 1)) {
    echo '「$a == 1」という条件、かつ、「$b == 1」という条件が満たされました';
}

echo '<br>';

$a = 1;
$b = 100;

// 条件式(||)の例
if (($a == 1) || ($b == 1)) {
    echo '「$a == 1」という条件、または、「$b == 1」という条件の内、どちらかもしくは両方が満たされました';
}

?>
ブラウザ

条件式(&&)の例では、「$a == 1」という条件と「$b == 2」という条件、両方を満たしていることを判定しています。

条件式(||)の例では、「$a == 1」という条件と「$b == 100」という条件の内、どちらかもしくは両方を満たしていることを判定しています。この例の場合、「$a == 1」の方が満たされているため、echoが実行されました。

複数の条件を書く場合、「if ($a == 1 && $b == 1)」のように書くこともできますが、「if (($a == 1) && ($b == 1))」のように、1つひとつの条件式を括弧でくくってあげると見やすいです。

if~else文の別の書き方

if~else文は以下のように書くこともできます。

htdocs/PHP/test.php

<?php

$number = 1;

if ($number == 100) :
    echo '値は100です';
elseif ($number == 10) :
    echo '値は10です';
elseif ($number == 1) :
    echo '値は1です';
else :
    echo 'どれにも該当しませんでした';
endif

?>
ブラウザ

ここまでは、実行したい命令は波括弧{}で囲ってきました。
これに対し、上記のようにコロン「:」で記述することもできるのです。
この場合、最後は「endif」を付ける必要があります。これは覚えるしかありません。

switch~case文

switch文はif~else文に似ています。
違いは以下の通りです。

htdocs/PHP/test.php

<?php

$name = '佐藤';

// if~else文で書く場合
if ($name == '加藤') {
    echo '名前は加藤さんです';
} elseif ($name == '伊藤') {
    echo '名前は伊藤さんです';
} elseif ($name == '佐藤') {
    echo '名前は佐藤さんです';
} else {
    echo 'どれにも該当しませんでした';
}

echo '<br>';

// switch文で書く場合
switch ($name){
    case '加藤': // $nameが加藤のとき
        echo '名前は加藤さんです';
        break;
    case '伊藤': // $nameが伊藤のとき
        echo '名前は伊藤さんです';
        break;
    case '佐藤': // $nameが佐藤のとき
        echo '名前は佐藤さんです';
        break;
    default:  // それ以外   
        echo 'どれにも該当しませんでした';
        break;
}

?>
ブラウザ

if~else文は「もしxxxだったら、またはxxxだったら…(elseifを複数記述できる)」という意味でした。
switch~case文は「xxxのケースだったら、またはxxxのケースだったら(caseを複数記述できる)」という意味です。

switch~case文は「switch (変数) {}」で表現され、変数に入っている値についてどのようなケースがあるか、各caseで判定していきます。
上記のコード例では、変数$nameに格納されている値が、「加藤」というケースであれば、「伊藤」というケースであれば、「佐藤」というケースであれば、と判定しています。

どれにも該当しない場合、switch~case文では「default」で表現します。
if~else文の「else」と同じような使い方です。

なお、各caseの最後には「break」を入れて下さい。
breakを忘れると、以下のようになります。

htdocs/PHP/test.php

<?php

$name = '加藤';

switch ($name){
    case '加藤':
        echo '名前は加藤さんです';
        // break; を書き忘れた
    case '伊藤':
        echo '名前は伊藤さんです';
        break;
    case '佐藤':
        echo '名前は佐藤さんです';
        break;
    default: 
        echo 'どれにも該当しませんでした';
        break;
}

?>
ブラウザ

「名前は加藤さんです」だけが出力されるはずが、続けて「名前は伊藤さんです」まで出力されてしまいました。
breakはcase内での終端を表しているのです。よって、breakを忘れると終端が無いと判断され、次のcaseに入り込んでしまうのです。

ループ処理

while文

while文は「while (条件式) { 実行したい処理 }」のように書き、条件式を満たしている間は、実行したい処理がずっと実行されます。このように、繰り返し処理することを、ループ処理と呼びます。

例えば、以下のように書きます。

htdocs/PHP/test.php

<?php

$count = 0;

while ($count < 10) {
    echo $count.'<br>';
    $count++;
}

?>
ブラウザ

条件式「$count < 10」は「変数$countが10未満の間は」という意味で、変数$countが10未満の間は、実行したい処理が実行されることになります。
処理内容は、変数$countの値を出力、変数$countをインクリメントしています。

以下が、処理の流れを図解したものです。

while文の説明

for文

for文は「for (変数の初期化; 条件式; 変数の増減) { 実行したい処理 }」のように書き、条件式を満たしている間は、実行したい処理がずっと実行されます。

htdocs/PHP/test.php

<?php

for ($count = 0; $count < 10; $count++) {
    echo $count.'<br>';
}

?>
ブラウザ

はじめに「$count = 0」で変数$countが初期化されます。
次に、条件式「$count < 10」を判定し、変数$countが10未満の間は、実行したい処理が実行されます。
処理が実行された後に、「$count++」が行われて変数$countがインクリメントされます。その後にまた、条件式が判定されます。

以下が、処理の流れを図解したものです。

for文の説明

continue

continueはループ処理の中で使われます。
例えば、以下のように書きます。

htdocs/PHP/test.php

<?php

$count = 0;

while ($count < 10) {

    if ($count == 1) {
        $count++;
        continue;
    }

    echo $count.'<br>';
    $count++;
}

?>
ブラウザ

if文の箇所でcontinueを使っています。
continueは「(処理はここまでにして)ループ処理を続けて」という命令になります。よって、その後のechoは実行されず、while文の先頭に戻るのです。

以下が、処理の流れを図解したものです。

continueの説明

break

breakはループ処理の中で使われます。
例えば、以下のように書きます。

htdocs/PHP/test.php

<?php

$count = 0;

while ($count < 10) {

    if ($count == 1) {
        break;
    }

    echo $count.'<br>';
    $count++;
}

echo '終了';

?>
ブラウザ

if文の箇所でbreakを使っています。
breakは「ループ処理をここで断ち切って(=ループ処理をここで終了させて)」という命令になります。よって、breakを最後にwhile文を抜けます。

以下が、処理の流れを図解したものです。

breakの説明

本節の説明は以上になります。

トップページ <<前のカリキュラムへ戻る 次のカリキュラムへ進む>>

タイトルとURLをコピーしました