PHP你可能也會掉入的坑

2021-09-08 16:58:16 字數 627 閱讀 5023

今天被人問:

$var = 'test';

if (isset($var['somekey']))

會不會輸出'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中switch你可能不知道的事

switch的常規用法是傳遞乙個引數然後逐一跟case對比 switch variable 在分支比較多的時候 switch要比if else if好用 比如 if value else if value2 else if value3 else if value4 value5 用switch來寫...

詳解php中switch你可能不知道的事

switch的常規用法是傳遞乙個引數然後逐一跟case對比 switch variable 在分支比較多的時候 switch要比if else if好用 比如 if value else if value2 else if value3 else if value4 value5 用switch來寫...

可能你不知道的字串中的乙個小坑!!!

簡單的記錄乙個小問題,一直居然都沒怎麼注意,心底對自己深深的說了一句 你真菜 平時日常我們接觸到的陣列去重太常見了。然後對於字串的去重,也是可能用的indexof。或者轉成陣列去查重,然後再轉換回來!在嘗試用其他方法的時候遇見乙個小問題,在此記錄下來與大家分析!var str 52121375640...