Bir dizi elemanı varsa nasıl kontrol edebilirim?

6 Cevap

Örnek: Ben böyle bir dizi elemanın varlığını kontrol ediyorum:

if (!self::$instances[$instanceKey]) {
    $instances[$instanceKey] = $theInstance;
}

Ancak, ben bu hatayı almaya devam:

Notice: Undefined index: test in /Applications/MAMP/htdocs/mysite/MyClass.php on line 16

Tabii ki, ben bir örneğini istiyorum ilk kez, $ örnekleri anahtarı bilemezsiniz. Ben mevcut Örneğin benim onay yanlış sanırım?

6 Cevap

array_key_exists () isset karşılaştırıldığında YAVAŞ (). Bu ikisinin bir arada (kod aşağıya bakınız) yardımcı olacaktır.

(Dizi elemanı NULL olsa bile yani TRUE döndürür) doğru kontrol sonucu korurken) isset performans avantajı (alır

if (isset($a['element']) || array_key_exists('element', $a)) {
       //the element exists in the array. write your code here.
}

Kıyaslama karşılaştırması: (Blog yazılarına aşağıdan ekstre).

array_key_exists() only : 205 ms
is_set() only : 35ms
isset() || array_key_exists() : 48ms

See http://www.zomeoff.com/php-fast-way-to-determine-a-key-elements-existance-in-an-array/ and http://www.zomeoff.com/php-isset-and-multi-dimentional-array/

Ayrıntılı bir tartışma için.

Sen array_key_exists işlevini kullanmak istiyorum.

Php kılavuzuna göre iki şekilde yapabilirsiniz. Bu kontrol için gerekenleri bağlıdır.

Eğer verilen anahtar veya dizin dizi kullanımda olup olmadığını kontrol etmek istiyorsanız, array_key_exists

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
echo "The 'first' element is in the array";
 }
?>

Bir değer bir dizi kullanımda olup olmadığını kontrol etmek istiyorsanız, in_array

 <?php
 $os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix";
}
?>