PHPにおける論理値の非厳密比較
前の例では、比較に
演算子 === を使用しました。この場合、変数は
値と型の両方で true と等しいかどうか
比較されます。
私たちのタスクでは、演算子
== も使用できます。もし変数 test に
常に true か false のどちらかが
入るなら、何も変わりません:
<?php
$test = true; // ここには true または false を書きます
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
しかし、変数 $test に
任意の値が入る可能性がある場合は、すべてが
ずっと複雑になります。その場合、変数内が
論理値でない値の場合、その値は
まず論理値に変換され、それから
初めて比較されます。
例えば、変数の中身が
数値 1 だとします。この場合、まず
論理型、つまり
true に変換されます。そしてその後、比較が実行されます:
<?php
$test = 1;
if ($test == true) {
echo '+++'; // これが動作します。なぜなら 1 == true は真だからです
} else {
echo '---';
}
?>
一方、例えば数値 0 は
false に変換されます。結果として、私たちの条件は
偽になります:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---'; // これが動作します。なぜなら 0 == true は真でないからです
}
?>
コードを実行せずに、画面に何が表示されるか 判断してください:
<?php
$test = 1;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
コードを実行せずに、画面に何が表示されるか 判断してください:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
コードを実行せずに、画面に何が表示されるか 判断してください:
<?php
$test = 1;
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
コードを実行せずに、画面に何が表示されるか 判断してください:
<?php
$test = 1;
if ($test != true) {
echo '+++';
} else {
echo '---';
}
?>
コードを実行せずに、画面に何が表示されるか 判断してください:
<?php
$test = '';
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
コードを実行せずに、画面に何が表示されるか 判断してください:
<?php
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>