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