empty()
จำเป็นต้องเข้าถึงค่าโดยอ้างอิง (เพื่อตรวจสอบว่าจุดอ้างอิงนั้นมีบางอย่างอยู่) และ PHP ก่อน 5.5 ไม่สนับสนุนการอ้างอิงถึงค่าชั่วคราวที่ส่งคืนจากฟังก์ชัน
อย่างไรก็ตามปัญหาที่แท้จริงที่คุณมีคือการที่คุณใช้empty()
เลยเชื่อว่าผิดค่า "ว่างเปล่า" จะแตกต่างจาก "เท็จ"
!isset($thing) || !$thing
ที่ว่างเปล่าเป็นเพียงนามแฝงสำหรับ เมื่อสิ่งที่คุณกำลังตรวจสอบอยู่เสมอ (ใน PHP ผลของการเรียกฟังก์ชั่นอยู่เสมอ) ที่empty()
ฟังก์ชั่นคืออะไร แต่ผู้ประกอบการปฏิเสธ
PHP ไม่มีแนวคิดของความว่างเปล่า ค่าที่ประเมินว่าเป็นเท็จจะว่างเปล่าค่าที่ประเมินเป็นจริงจะไม่ว่างเปล่า มันเป็นสิ่งเดียวกัน รหัสนี้:
$x = something();
if (empty($x)) …
และนี่:
$x = something();
if (!$x) …
มีผลลัพธ์เดียวกันเสมอในทุกกรณีสำหรับประเภทข้อมูลทั้งหมด (เนื่องจาก$x
มีการกำหนดไว้empty()
ซ้ำซ้อน)
มีค่าส่งคืนจากเมธอดอยู่เสมอ (แม้ว่าคุณจะไม่มีreturn
คำสั่งจะมีค่าส่งคืนและมีอยู่null
) ดังนั้น:
if (!empty($r->getError()))
มีเหตุผลเทียบเท่ากับ:
if ($r->getError())
empty
: wiki.php.net/rfc/empty_isset_exprs