PHP中用下標符號 去讀取字串的邏輯

2021-06-26 01:36:44 字數 1197 閱讀 7299

php中[(下標)]符號不僅可以應用於陣列和物件,還可以應用於字串,如果不注意很容易出錯。

比如獲取乙個網路介面,正常情況下會返回乙個陣列結構的json,經過解析之後結果為:

array(

'content' => 'this is returned by inte***ce'

)

我們獲取到介面資料之後,通過以下語句來判斷content是否有值的話,就會有問題:

if (!empty($result['content']))

echo $result['content'];

因為但是如果伺服器異常,可能會返回下面的html字串:

service internal error

這種情況下,經過json_decode解析我們如果使用上面的語句,就會獲得乙個 < 字元,這是為什麼呢?

我們來看一下 php5.2.5 中 作用於字串的邏輯:

.......

case is_string:

if (z_type_p(dim) != is_long)

tmp = *dim;

zval_copy_ctor(&tmp);

convert_to_long(&tmp);

dim = &tmp;

}

switch (type)

if (result)

}

return;

}

break;

......

上面原始碼中:dim 表示下標;

首先,判斷是不是操作符中沒有下標,如果是就報錯。因為沒有下標的話,是要新增乙個字陣列,這對於字串來說肯定要出錯。

然後判斷下標是不是數字型的,請注意 1234 和 "1234" ,php都會認為是數字型。如果不是數字型別的,就會將下標轉換為數字型,這種轉換規則下,字串都會被轉換為0;

所以,上面那個例子中,訪問下標為 content 的資料時,就會返回下標為0的資料,也就是 < 字元。

所以,嚴謹地來說,訪問乙個陣列下標的時候,要首先判斷一下這個型別是不是陣列型別,才能保證萬無一失。

C 讀取字串

我們在使用鍵盤輸入字串的時候,輸入流對於字串的讀取有幾種不同的實現方式。cin cin 在讀取字串時使用空白 空格 製表符和換行符 來確定字串的結束位置,這說明cin在獲取字元陣列輸入時只能讀取乙個單詞。而讀取該單詞後,cin將該字串放到陣列中,並在結果自動新增空字元。so,在某些時候,我們需要使用...

讀取字串長度

c 關於讀取乙個字串長度 包括空格回車 自用 方法1 include include using namespace std intmain 方法2 include include include include include using namespace std intmain 方法3 inc...

PHP擷取字串

php 自帶幾種字串擷取函式,其中常用到的就是 substr 和 mb substr。前者在處理中文時,gbk 為 2 個長度單位,utf 為 3 個長度單位,後者指定編碼後,乙個中文即為 1 個長度單位。substr 不用說,有時會截 1 3 個中文或半個中文,當然顯示出來是亂碼了,相對來說 mb...