[PHP] เปรียบเทียบ isset() vs empty() vs is_null()

40856242-616x190

ผมว่าหลายๆ คนคงเคยเขียน PHP มากันก็มากแต่มีใครเคยมีจะสังเกตไหมว่าใน PHP มีฟังก์ชันที่ให้เช็คค่าตัวแปรนั้นที่ให้มาตั่ง 3 แบบ คือ  isset() , empty() ,is_null()  แต่สิ่งที่เหมือนกันคือทั่งสามตัวนี้จะส่งค่ากลับมาให้เราเป็น boolean

 isset()

 ” isset — Determine if a variable is set and is not NULL 

คือเป็นการตัวสอบว่าในตัวแปรของเรานั้นมีค่าอยู่หรือไหม และไม่ใช่ null นั้นเองครับ หรือสรุปสั่นๆ มันจะส่งค่ากลับมาเป็น true ก็ต่อเมื่อตัวแปรของเราไม่ใช่ null หรือ ไม่ได้กำหนดค่าไว้

อ้างอิงจาก PHP Manual

———————————————————————————————————————–

empty() 

“empty — Determine whether a variable is empty” 

ฟังก์ชันนี้จะทำหน้าที่ตัวสอบตัวแปรของเราว่าเป็นนค่าว่างหรือศูนย์หรือไมนั้นเองครับ ตัวอย่างข้อมูลที่ฟังก์ชันนี้จะส่งค่าเป็น true คือ

  • “” (an empty string)
  • 0 (0 as an integer)
  • 0.0 (0 as a float)
  • “0” (0 as a string)
  • NULL
  • FALSE
  • array() (an empty array)
  • $var; (a variable declared, but without a value)

อ้างอิงจาก PHP Manual

———————————————————————————————————————–

is_null()

 “is_null — Finds whether a variable is NULL”

ฟังก์ชันนี้เป็นการตรวจสอบค่าว่าเป็น null หรือไม ซึ่งจะส่งค่าเป็น true ให้เีรา

อ้างอิงจาก PHP Manual

———————————————————————————————————————–

และเพื่อให้เห็นกันง่ายๆ เรามาดูตารางเปรียบเทียบแต่ละตัวกันดีกว่า ซึ่งเปรียบแทียบให้หมดแล้วตามนี้ครับ

Value of variable ($var)isset($var)empty($var)is_null($var)
“”(an empty string)bool(true)bool(true)
” ” (space)bool(true)
FALSEbool(true)bool(true)
TRUEbool(true)
array() (an empty array)bool(true)bool(true)
NULLbool(true)bool(true)
“0” (0 as a string)bool(true)bool(true)
0 (0 as an integer)bool(true)bool(true)
0.0 (0 as a float)bool(true)bool(true)
var $var; (a variable declared, but without a value)bool(true)bool(true)
NULL byte (” 0″)bool(true)
Facebook Comments