本文主要和大家分享PHP可能會掉進去的坑一,我們透過一個小範例和大家分享解答,希望能幫助大家。
今天被人問:
$var = 'test'; if (isset($var['somekey'])) { echo 'reach here!!!'; }
會不會輸出'reach here!!!'? ---當然不會啊。我想也沒想就答。
果然,我掉坑裡了!會輸出的!如果你沒掉坑里,那恭喜你,你也不用往下看了。
現在,讓我們來分析一下。既然 isset 了,那麼值到底是什麼呢?我們把它印出來:
var_dump($var['somekey']); //=>output: string(1) "t"
是字符't',就是 $var 的第一個字符,到這裡想明白了嗎?
因為變數$var是一個字串,學過C語言的話就知道它是char型別的數組,所以我們可以用$var[0] $var[1] $var[$i]. ..取到$var 的第$i+1 個字元。那麼剛才的 'somekey' 為什麼取到的是第一個字元呢?這是因為php在這裡做了隱式的型別轉換,將這裡的字串轉換成int型。你試過intval('somekey')函數的話就知道得到的就是0,所以 $var['somekey']最終就是 $var[0]了。最後,得到了 't'。
以上是PHP可能會掉進去的坑一的詳細內容。更多資訊請關注PHP中文網其他相關文章!