elseif文
教科書p98
100以下
100よりうえ200以下
200より上
で分岐を記述せよ
--->elseif.php まちがえた
<?php
$num=250;
if($num<=100){
echo "100以下";
}elseif($num>100 && $num<=200){//ここがちがう
echo "100より上200以下";
}else{
echo "200以上";
}
?>
--->正解
<?php
$num=250;
if($num<=100){
echo "100以下";
}elseif($num<=200){//100以下はすでに省かれているのでこの記述でよい
echo "100より上200以下";
}else{
echo "200以上";
}
?>
if分は上から実行され、ifに当てはまらなければ次のelseifに入り、それに当てはまらなければまた次の・・・という構造なので、
二段目のelseifは一段目のifの条件で省かれている分までは記述する必要がない
ただし、想定外の数字が入ることも考慮する必要があったりする
--->elseif.php
<?php
$score=1000;
if($score>=0 && $score<=30){
echo "a";
}elseif($score<=60){
echo "b";
}elseif($score<=90){
echo "c";
}elseif($score<=100){
echo "d";
}
?>
想定外の「1000点」が代入されるとif文を素通りするし、
--->elseif.php
<?php
$score=-10;
if($score>=0 && $score<=30){
echo "a";
}elseif($score<=60){
echo "b";
}elseif($score<=90){
echo "c";
}elseif($score<=100){
echo "d";
}
?>
マイナス値があると「b」で引っかかる条件文になってしまう。
こういうのに注意が要るらしい