นี่คือผลลัพธ์ของisset()
และempty()
สำหรับ 4 ความเป็นไปได้: ไม่ได้ประกาศ, ว่างเปล่า, เท็จและจริง
$a=null;
$b=false;
$c=true;
var_dump(array(isset($z1),isset($a),isset($b),isset($c)),true); //$z1 previously undeclared
var_dump(array(empty($z2),empty($a),empty($b),empty($c)),true); //$z2 previously undeclared
//array(4) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(true) [3]=> bool(true) }
//array(4) { [0]=> bool(true) [1]=> bool(true) [2]=> bool(true) [3]=> bool(false) }
คุณจะสังเกตเห็นว่าทุกคนที่ 'isset' ผลเป็นตรงข้ามของผล 'ว่างเปล่า' ยกเว้น$b=false
สำหรับกรณีที่ ค่าทั้งหมด (ยกเว้นค่าว่างซึ่งไม่ใช่ค่า แต่ไม่ใช่ค่า) ที่ประเมินเป็นเท็จจะส่งคืนจริงเมื่อทดสอบโดยisset
และเป็นเท็จเมื่อทดสอบโดย "ว่าง"
ดังนั้นใช้isset()
เมื่อคุณกังวลเกี่ยวกับการมีอยู่ของตัวแปร และใช้empty
เมื่อคุณกำลังทดสอบว่าจริงหรือเท็จ หากประเภทที่เกิดขึ้นจริงในเรื่องความว่างเปล่าใช้is_null
และ===0
, ,===false
===''