วิธีที่เหมาะสมในการตรวจสอบว่าคีย์อาร์เรย์มีอยู่หรือไม่คือฟังก์ชัน array_key_exists()
ความแตกต่างก็คือเมื่อคุณมี $_POST['variable'] = null
หมายความว่าคีย์นั้นมีอยู่และถูกส่ง แต่ค่าเป็นโมฆะ
อีกทางเลือกหนึ่งคือ isset()
ซึ่งจะตรวจสอบว่ามีคีย์อาร์เรย์อยู่หรือไม่และตั้งค่าไว้หรือไม่
ตัวเลือกสุดท้ายคือการใช้ empty()
ซึ่งจะตรวจสอบว่ามีคีย์อาร์เรย์อยู่หรือไม่หากตั้งค่าไว้และไม่ถือว่าค่าว่างเปล่า
ตัวอย่าง:
$arr = [
'a' => null,
'b' => '',
'c' => 1
];
array_key_exists('a', $arr);
isset($arr['a']);
empty($arr['a']);
array_key_exists('b', $arr);
isset($arr['b']);
empty($arr['b']);
array_key_exists('c', $arr);
isset($arr['c']);
empty($arr['c']);
เกี่ยวกับคำถามของคุณ
วิธีที่เหมาะสมในการตรวจสอบว่ามีการส่งค่าหรือไม่คือการใช้ array_key_exists () ด้วยวิธีการตรวจสอบคำขอ
if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)
{
}
แต่มีบางกรณีขึ้นอยู่กับตรรกะของคุณว่าที่ไหนisset()
และempty()
จะดีเช่นกัน
empty()
คือไม่ถูกต้องสำหรับ # 1 ทางเลือกเพราะใน PHP, สตริง'0'
เทียบเท่ากับfalse
- และempty()
ผลตอบแทนtrue
สำหรับค่าทั้งหมดคิดเป็นเท็จ ดังนั้นการใช้รหัสจะข้ามพิมพ์ถ้าค่าเป็นempty
'0'
หากคุณต้องการยกเว้นสตริงว่างโปรดดูคำตอบของ Augustus