วันนี้ผมจะแนะนำให้รู้จักกับการเปรียบเทียบด้วยเครื่องหมาย = ในอีกรูปแบบหนึ่ง โดยปกติแล้ว ทั้งใน PHP และ Javascript เวลาเราต้องการเปรียบเทียบค่าของตัวแปร 2 ตัว เราจะใช้เครื่องหมาย == (= ติดกัน 2 ตัว) ยกตัวอย่างเช่น
// PHP
// ตัวอย่างที่ 1
$a = 1;
$b = 1;
if ($a == $b)
{
// บล็อกนี้จะถูกทำเมื่อ $a มีค่าเท่ากับ $b
echo "#1: a is equal to b\n";
}
// ตัวอย่างที่ 2
$a = 1;
$b = "1";
if ($a == $b)
{
// บล็อกนี้จะถูกทำเมื่อ $a มีค่าเท่ากับ $b
echo "#2: a is equal to b\n";
}
// ตัวอย่างที่ 3
$a = 0;
$b = false;
if ($a == $b)
{
// บล็อกนี้จะถูกทำเมื่อ $a มีค่าเท่ากับ $b
echo "#3: a is equal to b\n";
}
ผลลัพธ์
#1: a is equal to b #2: a is equal to b #3: a is equal to b
การเปรียบเทียบแบบนี้ ถือเป็นการเปรียบเทียบค่ากันระหว่าง operand 2 ตัว โดยจะเปรียบเทียบเฉพาะค่าของมันเท่านั้น เมื่อผลของการเปรียบเทียบมีค่าเป็น true นั่นคือ operand ทั้งสองตัวนั้น “เท่ากัน” (equal) ซึ่งจะแตกต่างจาก ===
=== เป็นการเปรียบเทียบที่จะเปรียบเทียบทั้งค่า และชนิดของ operand ทั้งสองตัวนั้นด้วย เมื่อผลจากการเปรียบเทียบด้วย === มีค่าเป็น true เราถือว่า operand ทั้ง 2 ตัวนั้น “เหมือนกัน” (identical) นั่นเอง
ลองมาดูตัวอย่างกัน
// PHP
// ตัวอย่างที่ 4
$a = 1;
$b = 1;
if ($a === $b)
{
// บล็อกนี้จะถูกทำเมื่อ $a เหมือนกับ $b
echo "#4: a is identical to b\n";
}
// ตัวอย่างที่ 5
$a = 1;
$b = "1";
if ($a === $b)
{
// บล็อกนี้จะถูกทำเมื่อ $a เหมือนกับ $b
echo "#5: a is identical to b\n";
}
// ตัวอย่างที่ 6
$a = 0;
$b = false;
if ($a === $b)
{
// บล็อกนี้จะถูกทำเมื่อ $a เหมือนกับ $b
echo "#6: a is identical to b\n";
}
ผลลัพธ์
#4: a is identical to b
หมายเหตุ
- สำหรับการทำให้เป็น negative ด้วย ! นั้น เครื่องหมาย == เราจะใช้ != ในการเปรียบเทียบ “ไม่เท่ากัน” และ เครื่องหมาย === เราจะใช้ !== ในการเปรียบเทียบ “ไม่เหมือนกัน”
- เครื่องหมาย === และ !== สามารถใช้ได้ทั้ง PHP และ Javascript
- การใช้เครื่องหมาย = เพียงตัวเดียวนั้น หมายถึงการ “กำหนดค่าให้” (assign) ไม่ใช่การเปรียบเทียบ
อ้างอิง
ยัังงงอยู่แต่ก็ขอบคุณค่ะ
สรุปใช้ไดทั้งสองแบบ == หรือ === ก็ได้
คนเราคิดได้ไงว่ะเนี้ย