與我的工作朋友討論時,我們發現PHP有些奇怪。讓我們下面的代碼:在PHP中作爲數組訪問布爾型var返回NULL
<?php
$leo = false;
$retorno = $leo[0];
var_dump($retorno);
的var_dump()
回報是NULL
。現在,事情是,爲什麼返回NULL,如果我們試圖訪問作爲array
?
正確的行爲是不是拋出一個異常告訴我們,我們試圖訪問一個非數組對象(在這種情況下是一個布爾變量)?
你們怎麼想的?
與我的工作朋友討論時,我們發現PHP有些奇怪。讓我們下面的代碼:在PHP中作爲數組訪問布爾型var返回NULL
<?php
$leo = false;
$retorno = $leo[0];
var_dump($retorno);
的var_dump()
回報是NULL
。現在,事情是,爲什麼返回NULL,如果我們試圖訪問作爲array
?
正確的行爲是不是拋出一個異常告訴我們,我們試圖訪問一個非數組對象(在這種情況下是一個布爾變量)?
你們怎麼想的?
由於您嘗試訪問的不是字符串,而是一個布爾值,它返回NULL
。如從manual:
注: 訪問使用[]或{} 默默地返回NULL 其它類型(不包括實施適當的接口陣列或對象)的變量。
這是因爲NULL
是$leo[0]
不$leo
。您尚未將bool
或string
指定爲$leo[0]
,因此它是空的,最終結果爲NULL
。
如果你把:
$retorno = $leo;
或者
$leo[0] = false;
,那麼你會得到你所期待的結果。
$leo = false;
$retorno = array($leo);
var_dump($retorno[0]);
試試這個
直到PHP 5.4,如果你試圖得到一個字符串的字符串索引,它會投的字符串爲0,並得到了這個詞的第一個字母,即'$ S =' ASDF「; echo $ s ['f'];'。現在它會給你一個警告,說明偏移不存在。 – NobleUplift
那麼我們這個問題在哪裏呢? – Rizier123