STEP 4
より実践的なif文の複数の条件式について学びます。
10if文:
複数の条件式をつかおう
if文の条件式を「2つ合わせた形」を条件にすることもできます。日本語でいうと
「~かつ~だった場合に実行する」
「~または~だった場合に実行する」
これには「&&」「||」「!」をつかって表現します。
さっそくコードをみてみましょう。
サンプルコード①
<?php
$age = 24;
$from = '日本';
if ($age >= 20 && $from == '日本'){
echo "20歳以上かつ日本出身です";
}
?>
実行結果①
20歳以上かつ日本出身です
「&&」は左の条件式($age >= 20)と右の条件式($from == '日本')が両方ともTRUEだったときを捉えます。
「&&」の代わりに「and」でもOKです。
サンプルコード②
<?php
$kokugo = 45;
$eigo = 82;
if ($kokugo > 70 || $eigo > 70){
echo "合格です";
}
?>
実行結果②
合格です
「||」は左の条件式($kokugo > 70)または、右の条件式($eigo > 70)のどちらかがTRUEだったときを捉えます。
「||」の代わりに「or」でもOKです。
サンプルコード③
<?php
$from = 'アメリカ';
if (!($from == '日本')){
echo "日本以外の出身の方です";
}
?>
実行結果③
日本以外の出身の方です
「!」は否定を意味します。条件式($from == '日本')が成り立たないときすべてという意味になります。
「&&」「||」「!」は「論理演算子」と呼ばれます。
作りたい動きを実現するには、多くの条件式を組み合わせが必要になります。
「&&」「||」「!」をうまくつかって、わかりやすいif文を作成しましょう。
11switch文を
つかおう
条件で分岐できる方法として「switch文」と呼ばれるものもあります。if文と同じようですが、コードの書き方が異なります。
switch文は、次のような形式で書きます。
構文としては
switch (式){
case 値1:
式が値1と等しい時の処理1;
break;
case 値2:
式が値2と等しい時の処理1;
break;
default:
式がいずれの値にも等しくない時の処理;
}
サンプルコード
<?php
$pan = 'あんぱん';
switch ($pan){
case 'あんぱん':
echo 'あんぱんマンです';
break;
case 'しょくぱん':
echo 'しょくぱんマンです';
break;
case 'カレーパン':
echo 'カレーパンマンです';
break;
default:
echo '不明なヒーローです';
}
?>
実行結果
あんぱんマンです
◎breakの入れ忘れに注意!
breakがなくても動きます。
その場合、一致した箇所からswitch文の最後まで実行し続けてしまいます。
◎switch文ってif文と同じ??じゃぁif文じゃだめなの?
switch文はif文よりも短いコードになるため、コードの読みやすくなります。
メリットでいうとそのぐらいです。
実行速度でいうとswitch文のほうが遅いらしく、今のところはif文使っておきましょう。
※switch文がどのくらい遅いのかは検証してません、スミマセン
見やすさ、わかりやすさはおおいにメリットがあり、既存のコードでもおおく採用されています。
12くりかえし文 ①
for文をつかおう
for文もまた、if文と同じく必須の基礎です。プログラムでは繰り返し処理を多用します。ある全体の中から目当てのデータを1つずつ探してたり、また、その探したものを加工したりします。
繰り返しで処理を行うことをループ処理といいます。
for文は、制御する変数をつかって、次のような形式で書きます。
for(初期値; ループ処理する条件式; 増減式){
処理を実行
}
サンプルコード
<?php
for($i = 0; $i < 5; $i++){
echo $i;
}
?>
実行結果
01234
サンプルコードの解説
[$i = 0] で$iは0からからスタートします。[$i < 5] は5より小さい条件を示します。$iが5より小さい間{}の中の処理を繰り返します。
[$i++] で$iを1ずつ増やしていきます。(Step1 インクリメント参照)
$iは0からはじまり、1ずつ加算されたものが小さいもの順に4まで表示されます。
for文はくりかえし回数が決まってる場合に使う事が多いです。
13くりかえし文 ②
while文をつかおう
繰り返し処理として、もう一つ。while文というのがあります。while文はfor文と同じ繰り返し処理を行います。
違いとしては、while文は繰り返し回数よりも、条件式が成立することを重視した見た目になります。
while文は、制御する変数をつかって、次のような形式で書きます。
初期値;
while(ループ処理する条件式){
処理を実行する
増減式;
}
サンプルコード
<?php
$i = 0;
while($i < 5){
echo $i;
$i++;
}
?>
実行結果
01234
サンプルコードの解説
内容はfor文と同じです。[$i = 0] からスタートし、[$i < 5]で5より小さい間の処理を繰り返します。
$i++ は$iを1ずつ増やしていきます。(Step1 インクリメント参照)
while文はfor文とくらべて[初期値][条件式][増減式]が一列にありません。
このため、やや把握しにくく、無限に繰り返す状態になる「無限にループ」になりやすいので注意です。
◎無限ループ:繰り返し文をつかうときは注意!
無限ループとはプログラムの処理が永遠と繰り返される状態になることがあります。
サーバーに対応となる設定があれば、数十秒実行されつづけた後、処理は止まります。ない場合、動き続け、マシンの資源を食い続ける深刻な状態なので注意が必要です。
たいていのレンタルサーバーであれは、数十秒で止まるため心配はありません。しかし、かならず気をつけましょう。
繰り返しからぬける:break
while文のくり返しの中に「break」を入れると途中で抜けること(強制終了)ができます。if文と合わせて、無限ループをさける書き方ができます。
より安全にくり返すことができるので、ぜひ使いましょう。
サンプルコード
<?php
$i = 0;
while($i < 5){
if($i>3){ break; }
echo $i;
$i++;
}
?>
実行結果
0123
[$i>3] により、$iが3より大きくなったら、[break]が実行され、くり返し処理そのものから抜けます。繰り返しをスキップする:continue
while文のくり返しの中に「continue」を入れると繰り返しをスキップする(1回とばす)ことができます。サンプルコード
<?php
$i = 0;
while($i < 5){
if($i==3){
$i++;
continue;
}
echo $i;
$i++;
}
?>
実行結果
0124
サンプルコードの解説
$iが3のときにcontinue文が実行されます。次の繰り返しの条件判断($i < 5)へすすむため、3は表示されません。
いかがでしょうか。くり返し処理はプログラミングの基本、最大に便利なツールです。ぜひためしてみてください。