นี่คือผลลัพธ์ของ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===''