PHPにおける論理値の非厳密比較

前の例では、比較に 演算子 === を使用しました。この場合、変数は 値と型の両方で true と等しいかどうか 比較されます。

私たちのタスクでは、演算子 == も使用できます。もし変数 test に 常に true か false のどちらかが 入るなら、何も変わりません:

php<?php
  $test = true; // ここには true または false を書きます
  
  if ($test == true) {
    echo '+++';
  } else {
    echo '---';
  }
?>

しかし、変数 $test に 任意の値が入る可能性がある場合は、すべてが ずっと複雑になります。その場合、変数内が 論理値でない値の場合、その値は まず論理値に変換され、それから 初めて比較されます。

例えば、変数の中身が 数値 1 だとします。この場合、まず 論理型、つまり true に変換されます。そしてその後、比較が実行されます:

php<?php
  $test = 1;
  
  if ($test == true) {
    echo '+++'; // これが動作します。なぜなら 1 == true は真だからです
  } else {
    echo '---';
  }
?>

一方、例えば数値 0 は false に変換されます。結果として、私たちの条件は 偽になります:

php<?php
  $test = 0;
  
  if ($test == true) {
    echo '+++';
  } else {
    echo '---'; // これが動作します。なぜなら 0 == true は真でないからです
  }
?>
Задание 1

コードを実行せずに、画面に何が表示されるか 判断してください:

php<?php
  $test = 1;
    
  if ($test == true) {
    echo '+++';
  } else {
    echo '---';
  }
?>
Задание 2

コードを実行せずに、画面に何が表示されるか 判断してください:

php<?php
  $test = 0;
    
  if ($test == true) {
    echo '+++';
  } else {
    echo '---';
  }
?>
Задание 3

コードを実行せずに、画面に何が表示されるか 判断してください:

php<?php
  $test = 1;
    
  if ($test == false) {
    echo '+++';
  } else {
    echo '---';
  }
?>
Задание 4

コードを実行せずに、画面に何が表示されるか 判断してください:

php<?php
  $test = 1;
    
  if ($test != true) {
    echo '+++';
  } else {
    echo '---';
  }
?>
Задание 5

コードを実行せずに、画面に何が表示されるか 判断してください:

php<?php
  $test = '';
    
  if ($test == false) {
    echo '+++';
  } else {
    echo '---';
  }
?>
Задание 6

コードを実行せずに、画面に何が表示されるか 判断してください:

php<?php
  if ($test == true) {
    echo '+++';
  } else {
    echo '---';
  }
?>