การเปรียบเทียบค่าบูลีนแบบไม่เข้มงวดใน 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 '---';
  }
?>