2015-09-18 27 views
10

Herhangi bir nedenden ötürü bir dizi olacağını düşündüğümüz bir değişken var, ama boş olacak.null değişkenin anahtarı eşit değil null değil error

$var = null

Bu değişken bir değer elde etmeye çalışmak.

$value = $var['key']

Bu hata atmak değil, hislerim olsa olur olmasıdır. Bunun yerine, şu ki, $ değeri şimdi de boştur. Yukarıdaki satırın bir hata yapmaması için belirli bir neden var mı?

+0

için çare

function _get($from, $key) { if(is_null($from)) { trigger_error('Trying to get value of null'); return null; } return $from[$key]; } 

Değişim bu tür kullanabiliyorsa Ben doğru, bir dizinin var olmayan bir değeri okumaya çalışıyor * hata yapar. Error_reporting() '' 'konumuna ayarlanmış mı? –

+0

Bir hata atmaz, normalde bir uyarı verir, ancak bu 'null' durumunda görünmez. –

+4

php asla beni şaşırtmadı. – Amarnasan

cevap

9

yoktur "neredeyse çoğaltmak": Why does accessing array index on boolean value does not raise any kind of error?

kod var gibi görünüyor:

$var = false; 
$value = $var['key']; 

ve cevap - bu dahil değil başka tür

Erişme değişkenleri (var [] veya {} kullanarak uygun arabirimleri uygulayan diziler veya nesneler sessizce NULL döndürür. Bu dizede Yani

$var['key'] 

$ var değişkendir (ben sadece mantıksal değere NULL yerine aynı açıklama davanız, $ var = boş bahsediyorum ama boolean olurdu) type NULL, ve [] kullanarak sessiz NULL türüne (diğer dizi bu dizi veya nesne) erişim sessizce NULL döner.

0

Sen

$value = $var['key']; 

$value = _get($var, 'key'); 
İlgili konular