SORU
6 Ocak 2009, Salı


En iyi değişken'PHP varlığını s; isset test etmek için yol() açık kırık

isset() docs:

isset() will return FALSE if testing a variable that has been set to NULL.

Temelde, isset() değişken özelliği olup olmadığını, ama bir şey için ayarlanmış olup olmadığını kontrol etmiyor ama NULL.

Göz önüne alındığında, aslında bir değişkenin varlığını kontrol etmek için en iyi yolu nedir? Gibi bir şey denedim:

if(isset($v) || @is_null($v))

(@ gerekli önlemek için Uyarı $v ayarlı değil) ama is_null() var benzer bir sorun için isset(): döner TRUE Geri Al değişkenler! Ayrıca görünür:

@($v === NULL)

tam olarak nasıl işlediğini çıkmış @is_null($v), çok, çok seviyorum.

Nasıl güvenilir bir şekilde PHP bir değişkenin varlığını kontrol etmek gerekiyor?

< / ^ hr .

Edit: açıkça ayarlanmamıştır değişkenler ve 21 ** için ayarlanan değişkenler arasında PHP: bir fark var

<?php
$a = array('b' => NULL);
var_dump($a);

PHP $a['b'] var, ve NULL bir değere sahip olduğunu gösterir. Eğer eklerseniz:

var_dump(isset($a['b']));
var_dump(isset($a['c']));

bahsettiğim belirsizlik isset() fonksiyonu ile görebilirsiniz. İşte var_dump()s bu: üç çıktı

array(1) {
  ["b"]=>
  NULL
}
bool(false)
bool(false)

< / ^ hr .

Daha da edit: iki şey.

Bir kullanım örneği. Bir dizi olmak dönüştüğünü verileri bir SQL UPDATE deyim, nerede dizisinin anahtarları tablonun sütun dizisinin değerleri değerleri uygulanacaksa her sütun. Tablo sütunlarının herhangi NULL bir değer, dizideki NULL değeri geçen değeriyle tutabilir. Sanagerekbir şekilde ayırt etmek arasında bir dizi anahtar mevcut, ve bir dizi değeri olmak ayarlamak için NULL; aramızdaki fark bu güncelleme değil sütunun değeri ve güncelleme sütunun değeri için NULL.

İkinci olarak, array_key_exists() Zoredache's answer düzgün çalışır, herhangi bir global değişkenler için yukarıda kullanmak için ve:

<?php
$a = NULL;
var_dump(array_key_exists('a', $GLOBALS));
var_dump(array_key_exists('b', $GLOBALS));

çıkışlar:

bool(true)
bool(false)

Düzgün hemen her yerde kolları beri orada bulunmayan değişkenler ve NULL ayarlanmış olan değişkenler arasında herhangi bir belirsizlik varGerçekten bir değişkenin varlığını kontrol etmek için PHP array_key_exists() resmi en kolay yolu arıyorum.

(Sadece başka bir dava düşündüğüm için sınıf özellikleri, hangi var property_exists(), olan, göre its docs, benzer şekilde çalışır array_key_exists() bunu düzgün bir şekilde ayırır arasında olmamak ayarlayın ve ayarlamak için NULL.)

CEVAP
6 Ocak 2009, Salı


Eğer denetleme değişken küresel sahada olsaydı yapabilirsiniz:

array_key_exists('v', $GLOBALS) 

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CMTelly

    CMTelly

    2 Mayıs 2007
  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006