Orta yoldan kaçtığım için bu soruya 2 sent eklemek istedim.
Daha önce de belirtildiği gibi isset()
, anahtarın değerini değerlendirecektir, böylece bu false
değer null
nerede olursa dönecektir array_key_exists()
, ancak anahtarın dizide var olup olmadığını kontrol edecektir.
PHP 7 kullanarak basit bir kıyaslama çalıştırdım, gösterilen sonuçlar yinelemeyi bitirmek için gereken süredir:
$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
Bu özel fonksiyonun sonuçlarını bu kıyaslama ile de tamamladım:
function array_key_isset($k, $a){
return isset($a[$k]) || array_key_exists($k, $a);
}
Görüldüğü ve zaten söylendiği gibi isset()
en hızlı yöntemdir, ancak değer ise yanlış dönebilir null
. Bu istenmeyen sonuçlar verebilir ve genellikle array_key_exists()
durum böyle ise kullanılmalıdır.
Ancak orta çıkış yolu var ve kullanıyor isset() || array_key_exists()
. Bu kod genellikle daha hızlı işlevi kullanır isset()
ve yalnızca false değerini isset()
döndürürse doğrulamak için kullanın . Yukarıdaki tabloda gösterildiği gibi, açıkça arama kadar hızlıdır .array_key_exists()
isset()
Evet, bir fonksiyona yazmak ve sarmak biraz daha yavaş ama çok daha kolay. Performans, büyük veri, vb kontrol etmek için buna ihtiyacınız varsa, tam olarak yazın, aksi takdirde, fonksiyonda çok küçük bir ek yükün array_key_isset()
ihmal edilebilir olması durumunda 1 kez kullanım .