PHP基礎学習
Chapter3. 制御構文と比較演算子
前章までの学習では、変数の代入や関数の呼び出しを行うプログラミングコード「ステートメント」を記述してきました。
これらのステートメントは実行時(ページアクセス時)にコードの記述順に処理されますが、本章ではプログラミングに不可欠な、条件分岐や繰り返しといった
制御構文について学習します。
前章までの学習では、変数の代入や関数の呼び出しを行うプログラミングコード「ステートメント」を記述してきました。
これらのステートメントは実行時(ページアクセス時)にコードの記述順に処理されますが、本章ではプログラミングに不可欠な、条件分岐や繰り返しといった
制御構文について学習します。
$a = 20;
$b = 10;
if ($a > $b) {
echo "判定結果はtrue!";
}
ifに続く括弧内を条件式といい、等号・不等号などの比較演算子を用いて記述します。$a = 20;
$b = 10;
$c = $a > $b;
if ($c) {
echo "判定結果はtrue!";
}
$c には($a > $b)の判定結果としてbool値「true」が代入されます。function useDiscount($price) {
return ($price >= 5000);
}
$total = 8000;
if (useDiscount($total)) {
echo "割引適用!";
}
useDiscount()は、引数$priceが5000以上の場合に、trueを返します。$a = 20;
$b = 10;
if ($a > $b) {
echo "判定結果はtrue!";
} else {
echo "判定結果はfalse!";
}
$price = 8000;
if ($price >= 10000) {
echo "30%割引";
} else if ($price >= 8000) {
echo "20%割引";
} else if ($price >= 5000) {
echo "10%割引";
} else {
echo "割引なし";
}
$rank = "A";
switch ($rank) {
case "A":
$color = "#ff0000";
echo $color;
break;
case "B":
$color = "#00ff00";
echo $color;
break;
case "C":
$color = "#0000ff";
echo $color;
break;
default:
$color = "#ffffff";
echo $color;
break;
}
$rankの比較対照となる文字列は、上記のようにそれぞれ、case文(case スペース 値 スペース コロン)で記述します。$rank = "A";
if ($rank == "A") {
$color = "#ff0000";
echo $color;
} else if ($rank == "B") {
$color = "#00ff00";
echo $color;
} else if ($rank == "C") {
$color = "#0000ff";
echo $color;
} else {
$color = "#ffffff";
echo $color;
}
「==」比較演算子は「等しい」を表しますが、else if文で、同一変数の条件式を、何度も記述しています。$a == $b | イコール | 型の相互変換をした後で $a が $b に等しい時に true |
$a === $b | イコール(型比較) | $a が $b に等しく、および同じ型である場合に true |
$a != $b | ノットイコール | 型の相互変換をした後で $a が $b に等しくない場合に true |
$a !== $b | ノットイコール(型比較) | $a が $b に等しくない、または $a の型が $b の型に等しくない場合に true | $a <> $b | 小なり大なり | 型の相互変換をした後で $a が $b に等しくない場合に true |
$a < $b | 小なり | $a が $b より少ない時に true |
$a > $b | 大なり | $a が $b より多い時に true |
$a <= $b | 小なりイコール | $a が $b より少ないか等しい時に true |
$a >= $b | 大なりイコール | $a が $b より多いか等しい時に true |
$a = "20";
$b = 20;
if ($a == $b) {
echo "$aと$bの値は等しい";
}
if ($a !== $b) {
echo "$aと$bの値は等しが型は等しくない";
}
$a = "";
$b = 0;
if (!$a) {
echo "$aは空文字";
}
if (!$b) {
echo "$bは0";
}
ノット演算子のみで記述した場合、空文字、ゼロ、nullの場合にtrueとなります。for ($n = 1; $n <= 10; $n++) {
echo $n;
}
上記コードを実行すると、波括弧内の処理が繰り返し実行され、1から10までの数字が表示されます。<div class="test">
<select name="month">
<?php for ($m = 1; $m <= 12; $m++) { ?>
<option value="<?= $m ?>"><?= $m ?>月</option>
<?php } ?>
</select>
</div>
$n = 1;
for (; ; ) {
echo "test {$n}";
$n++;
}
$n = 1;
for (; ; ) {
if ($n >= 100) break;
echo "test {$n}";
$n++;
}
$array = ["orange", "banana"];
foreach ($array as $value) {
echo $value;
}
上記コードは、配列内の要素を順番に表示します。$array = [
"name" => "inoue",
"tel" => "06-0000-0000",
"pref" => "Osaka"
];
foreach ($array as $k => $v) {
echo "{$k} = {$v}";
}
$array1 = [
"name" => "inoue",
"tel" => "06-0000-0000",
"pref" => "Osaka"
];
$array2 = [
"name" => "suzuki",
"tel" => "03-0000-0000",
"pref" => "Tokyo"
];
$address = [ $array1, $array2 ];
foreach ($address as $addr) {
echo $addr["name"];
echo $addr["tel"];
echo $addr["pref"];
}
$array1 = [
"name" => "inoue",
"tel" => "06-0000-0000",
"pref" => "Osaka"
];
$array2 = [
"name" => "suzuki",
"tel" => "03-0000-0000",
"pref" => "Tokyo"
];
$address = [ $array1, $array2 ];
foreach ($address as $addr) {
if ($addr["name"] == "inoue") continue;
echo $addr["name"];
echo $addr["tel"];
echo $addr["pref"];
}
上記コードでは、名前が「inoue」と「suzuki」の多次元配列をループしていますが、$n = 1;
while ($n <= 10) {
echo $n;
$n++;
}
上記コードを実行すると、波括弧内の処理が繰り返し実行され、1から10までの数字が表示されます。$n = 11;
do {
echo $n;
$n++;
} while ($n <= 10);
do-while(ワイル)構文は、doに続く波括弧内に処理を記述し、whileに続く括弧内に条件式記述、最後にセミコロンで終了します。