วันอังคารที่ 11 มีนาคม พ.ศ. 2568

[PHP] การใช้ isset() และ empty() ต่างกันอย่างไร?

ถ้าพูดถึง PHP ฟังก์ชันที่เกี่ยวกับการเช็กค่าตัวแปรสองตัวที่ถูกใช้บ่อยมาก ๆ ก็คือ isset() และ empty() หลายคนอาจจะงงว่ามันต่างกันยังไง? ใช้ตัวไหนเมื่อไหร่? วันนี้เราจะมาอธิบายให้เข้าใจแบบง่าย ๆ เหมือนนั่งคุยกับเพื่อน!

1. isset() คืออะไร?

isset() ใช้สำหรับตรวจสอบว่าตัวแปรนั้น ถูกกำหนดค่าแล้วหรือไม่ และ ไม่ได้เป็นค่า NULL ถ้าตัวแปรนั้นถูกกำหนดค่าแล้ว (ไม่ว่าจะเป็นค่าที่ว่างเปล่าแต่ไม่ใช่ NULL) มันจะคืนค่า true แต่ถ้าตัวแปรนั้นไม่มีอยู่หรือมีค่าเป็น NULL จะคืนค่า false

ตัวอย่างการใช้งาน isset()

$var1 = "Hello, PHP!";
$var2 = NULL;

var_dump(isset($var1)); // true
var_dump(isset($var2)); // false
var_dump(isset($var3)); // false เพราะ $var3 ไม่มีการประกาศ

2. empty() คืออะไร?

empty() ใช้เพื่อตรวจสอบว่าตัวแปร เป็นค่าที่ถือว่า "ว่างเปล่า" หรือไม่ หมายถึง ค่าเป็น NULL, 0, "" (สตริงว่าง), false, array() (อาร์เรย์ว่าง), หรือไม่มีการกำหนดค่ามาก่อน ถ้าตัวแปรอยู่ในสถานะ "ว่างเปล่า" มันจะคืนค่า true ถ้าไม่ว่างเปล่าจะคืนค่า false

ตัวอย่างการใช้งาน empty()

$var1 = ""; // สตริงว่าง
$var2 = 0;   // ศูนย์
$var3 = NULL;
$var4 = [];
$var5 = "Hello";

var_dump(empty($var1)); // true
var_dump(empty($var2)); // true
var_dump(empty($var3)); // true
var_dump(empty($var4)); // true
var_dump(empty($var5)); // false เพราะมันมีค่าจริงๆ

3. เปรียบเทียบ isset() และ empty()


สถานะของตัวแปร isset($var) empty($var)
ไม่ได้กำหนดค่า false true
NULL false true
false true true
0 true true
"" (สตริงว่าง) true true
"PHP" (สตริงที่มีค่า) true false
[] (อาร์เรย์ว่าง) true true

4. แล้วเราควรใช้ตัวไหน?

  • ถ้าต้องการ เช็กว่าตัวแปรถูกกำหนดค่าหรือไม่ ให้ใช้ isset()
  • ถ้าต้องการ เช็กว่าตัวแปรมีค่าที่ "ว่างเปล่า" หรือไม่ ให้ใช้ empty()

ตัวอย่างการใช้งานในชีวิตจริง

ใช้ isset() ตรวจสอบว่ามีค่าหรือไม่ก่อนใช้งาน

if (isset($_POST['username'])) {
    echo "Username: " . $_POST['username'];
} else {
    echo "กรุณากรอกชื่อผู้ใช้";
}

ใช้ empty() ตรวจสอบว่าค่าว่างหรือไม่

if (empty($_POST['password'])) {
    echo "กรุณากรอกรหัสผ่าน";
} else {
    echo "รหัสผ่านของคุณถูกบันทึกแล้ว";
}

5. ใช้ isset() และ empty() ร่วมกัน

บางกรณีเราอาจใช้ทั้งสองฟังก์ชันร่วมกัน เช่น

if (isset($_POST['email']) && !empty($_POST['email'])) {
    echo "อีเมลของคุณคือ " . $_POST['email'];
} else {
    echo "กรุณากรอกอีเมล";
}

ในกรณีนี้ isset() จะช่วยให้แน่ใจว่าตัวแปรถูกกำหนดแล้ว และ empty() จะช่วยให้แน่ใจว่ามันไม่ใช่ค่าที่ว่างเปล่า

6. ข้อควรระวังในการใช้ isset() และ empty()

  1. isset() ไม่สามารถตรวจสอบได้ว่าค่าตัวแปรว่างเปล่าหรือไม่
  2. empty() สามารถเช็กตัวแปรที่ไม่ได้ประกาศได้เลยโดยไม่เกิด Error
  3. ระวังเรื่องค่าของตัวเลข 0 เพราะ empty(0) จะคืนค่า true

ตัวอย่างที่ต้องระวัง:

$var = 0;
if (empty($var)) {
    echo "ตัวแปรนี้ว่าง";
} else {
    echo "ตัวแปรนี้มีค่า";
}
// ผลลัพธ์: ตัวแปรนี้ว่าง (เพราะ empty(0) ให้ค่าเป็น true)

7. สรุปแบบเข้าใจง่าย

  • isset($var): เช็กว่าตัวแปรถูกกำหนดค่าแล้ว และไม่ใช่ NULL
  • empty($var): เช็กว่าตัวแปร "ไม่มีค่า" หรือเป็นค่าที่ถือว่าว่างเปล่า
  • isset() คืนค่า false เมื่อตัวแปรเป็น NULL หรือไม่มีอยู่
  • empty() คืนค่า true เมื่อค่าของตัวแปรเป็น 0, "", false, NULL, array(), หรือไม่มีอยู่เลย
  • ควรใช้ isset() เช็กว่าตัวแปรมีอยู่หรือไม่ และ empty() เช็กว่าตัวแปรมีค่าหรือเปล่า

 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น