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 == b | aとbが等しい | if (a == b) { 実行したい命令 } |
a != b | aとbが等しくない | if (a != b) { 実行したい命令 } |
a < b | aはbより小さい | if (a < b) { 実行したい命令 } |
a <= b | aはb以下 | if (a <= b) { 実行したい命令 } |
a > b | aはbより大きい | if (a > b) { 実行したい命令 } |
a >= b | aは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をインクリメントしています。
以下が、処理の流れを図解したものです。
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がインクリメントされます。その後にまた、条件式が判定されます。
以下が、処理の流れを図解したものです。
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文の先頭に戻るのです。
以下が、処理の流れを図解したものです。
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文を抜けます。
以下が、処理の流れを図解したものです。
本節の説明は以上になります。