ฉันต้องการเพิ่ม 2 เซ็นต์ของฉันสำหรับคำถามนี้เนื่องจากฉันหายไปกลางทาง
ตามที่ได้บอกไปแล้วisset()
จะประเมินค่าของคีย์ดังนั้นมันจะส่งคืนfalse
ถ้าค่านั้นเป็นnull
ตำแหน่งที่array_key_exists()
จะตรวจสอบเฉพาะคีย์ที่มีอยู่ในอาร์เรย์
ฉันใช้เกณฑ์มาตรฐานอย่างง่ายโดยใช้ PHP 7 ผลลัพธ์ที่แสดงคือเวลาที่ใช้ในการทำซ้ำให้เสร็จ:
$a = [null, true];
isset($a[0]) # 0.3258841 - false
isset($a[1]) # 0.28261614 - true
isset($a[2]) # 0.26198816 - false
array_key_exists(0, $a) # 0.46202087 - true
array_key_exists(1, $a) # 0.43063688 - true
array_key_exists(2, $a) # 0.37593913 - false
isset($a[0]) || array_key_exists(0, $a) # 0.66342998 - true
isset($a[1]) || array_key_exists(1, $a) # 0.28389215 - true
isset($a[2]) || array_key_exists(2, $a) # 0.55677581 - false
array_key_isset(0, $a) # 1.17933798 - true
array_key_isset(1, $a) # 0.70253706 - true
array_key_isset(2, $a) # 1.01110005 - false
ฉันได้เพิ่มผลลัพธ์จากฟังก์ชั่นที่กำหนดเองนี้มาพร้อมกับเกณฑ์มาตรฐานเช่นกันเพื่อความสำเร็จ:
function array_key_isset($k, $a){
return isset($a[$k]) || array_key_exists($k, $a);
}
เท่าที่เห็นและบอกอยู่แล้วisset()
เป็นวิธีที่เร็วที่สุด null
แต่ก็สามารถกลับเท็จถ้ามีค่าเป็น สิ่งนี้อาจให้ผลลัพธ์ที่ไม่พึงประสงค์และมักจะใช้array_key_exists()
หากเป็นกรณี
อย่างไรก็ตามมีวิธีออกกลางและที่ใช้isset() || array_key_exists()
อยู่ รหัสนี้โดยทั่วไปจะใช้ฟังก์ชั่นที่เร็วขึ้นisset()
และถ้า isset()
ผลตอบแทนที่ผิดพลาดเท่านั้นจากนั้นใช้array_key_exists()
ในการตรวจสอบ isset()
แสดงในตารางข้างต้นเป็นเพียงแค่เร็วที่สุดเท่าที่โทรชัดถ้อยชัดคำ
ใช่มันเป็นมากกว่าการเขียนและห่อในฟังก์ชั่นจะช้าลง แต่ง่ายขึ้นมาก หากคุณต้องการสิ่งนี้เพื่อประสิทธิภาพการตรวจสอบข้อมูลขนาดใหญ่ ฯลฯ เขียนให้เต็มมิฉะนั้นหากการใช้งาน 1 ครั้งที่ค่าใช้จ่ายเล็กน้อยในฟังก์ชั่นarray_key_isset()
นั้นเล็กน้อยมาก