2015-06-12 45 views
1

與我的工作朋友討論時,我們發現PHP有些奇怪。讓我們下面的代碼:在PHP中作爲數組訪問布爾型var返回NULL

<?php 

$leo = false; 
$retorno = $leo[0]; 
var_dump($retorno); 

var_dump()回報是NULL。現在,事情是,爲什麼返回NULL,如果我們試圖訪問作爲array

正確的行爲是不是拋出一個異常告訴我們,我們試圖訪問一個非數組對象(在這種情況下是一個布爾變量)?

你們怎麼想的?

+0

直到PHP 5.4,如果你試圖得到一個字符串的字符串索引,它會投的字符串爲0,並得到了這個詞的第一個字母,即'$ S =' ASDF「; echo $ s ['f'];'。現在它會給你一個警告,說明偏移不存在。 – NobleUplift

+0

那麼我們這個問題在哪裏呢? – Rizier123

回答

4

由於您嘗試訪問的不是字符串,而是一個布爾值,它返回NULL。如從manual

注: 訪問使用[]或{} 默默地返回NULL 其它類型(不包括實施適當的接口陣列或對象)的變量。

0

這是因爲NULL$leo[0]$leo。您尚未將boolstring指定爲$leo[0],因此它是空的,最終結果爲NULL

如果你把:

$retorno = $leo; 

或者

$leo[0] = false; 

,那麼你會得到你所期待的結果。

0
$leo = false; 
$retorno = array($leo); 
var_dump($retorno[0]); 

試試這個