Saya ingin menambahkan 2 sen pada pertanyaan ini, karena saya kehilangan jalan tengah.
Seperti yang sudah mengatakan isset()akan mengevaluasi nilai kunci sehingga akan kembali falsejika nilai yang nullmana array_key_exists()hanya akan memeriksa apakah kunci ada dalam array.
Saya telah menjalankan patokan sederhana menggunakan PHP 7, hasil yang ditampilkan adalah waktu yang dibutuhkan untuk menyelesaikan iterasi:
$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
Saya telah menambahkan hasil dari fungsi kustom ini dengan tolok ukur ini untuk penyelesaian:
function array_key_isset($k, $a){
return isset($a[$k]) || array_key_exists($k, $a);
}
Seperti yang terlihat dan sudah diceritakan isset()adalah metode tercepat tetapi dapat mengembalikan false jika nilainya null. Ini bisa memberikan hasil yang tidak diinginkan dan biasanya orang harus menggunakannya array_key_exists()jika itu masalahnya.
Namun ada jalan tengah dan itu menggunakan isset() || array_key_exists() . Kode ini umumnya menggunakan fungsi yang lebih cepat isset()dan jika isset() mengembalikan false saja maka gunakan array_key_exists()untuk memvalidasi. Ditampilkan pada tabel di atas, ini sama cepatnya dengan panggilan biasa isset().
Ya, ini sedikit lebih untuk menulis dan membungkusnya dalam suatu fungsi lebih lambat tetapi jauh lebih mudah. Jika Anda memerlukan ini untuk kinerja, memeriksa data besar, dll, tuliskan sepenuhnya, jika tidak, jika penggunaannya 1 kali, biaya overhead yang sangat kecil array_key_isset()dapat diabaikan.