一個(gè)字符串 string 就是由一系列的字符組成,其中每個(gè)字符等同于一個(gè)字節(jié)。這意味著 PHP 只能支持 256 的字符集伶棒,因此不支持 Unicode 。詳見(jiàn)字符串類型詳解彩库。string 最大可以達(dá)到 2GB肤无。
不像雙引號(hào)和 heredoc 語(yǔ)法結(jié)構(gòu),在單引號(hào)字符串中的變量和特殊字符的轉(zhuǎn)義序列將不會(huì)被替換骇钦。
要表達(dá)一個(gè)單引號(hào)自身舅锄,需在它的前面加個(gè)反斜線(\)來(lái)轉(zhuǎn)義。要表達(dá)一個(gè)反斜線自身司忱,則用兩個(gè)反斜線(\)皇忿。其它任何方式的反斜線都會(huì)被當(dāng)成反斜線本身:也就是說(shuō)如果想使用其它轉(zhuǎn)義序列例如 \r 或者 \n,并不代表任何特殊含義坦仍,就單純是這兩個(gè)字符本身鳍烁。
$a=array("a"=>"123");
echo $a['a'];
#123
echo "$a[a]";
#123
echo "$a['a']";
#報(bào)錯(cuò)
echo "$a['a']";
注意:如果要是用帶有引號(hào)的鍵名,可以如下的方法使用:
echo "{$a['b']}";
#報(bào)錯(cuò)繁扎,因?yàn)閗ey幔荒,b不存在
任何具有 string 表達(dá)的標(biāo)量變量,數(shù)組單元或?qū)ο髮傩远伎墒褂么苏Z(yǔ)法梳玫。只需簡(jiǎn)單地像在 string 以外的地方那樣寫(xiě)出表達(dá)式爹梁,然后用花括號(hào) { 和 } 把它括起來(lái)即可。由于 { 無(wú)法被轉(zhuǎn)義提澎,只有 來(lái)表達(dá) {$盼忌。
string 中的字符可以通過(guò)一個(gè)從 0 開(kāi)始的下標(biāo)积糯,用類似 array 結(jié)構(gòu)中的方括號(hào)包含對(duì)應(yīng)的數(shù)字來(lái)訪問(wèn)和修改,比如 str{42}。
用超出字符串長(zhǎng)度的下標(biāo)寫(xiě)入將會(huì)拉長(zhǎng)該字符串并以空格填充。非整數(shù)類型下標(biāo)會(huì)被轉(zhuǎn)換成整數(shù)梦重。非法下標(biāo)類型會(huì)產(chǎn)生一個(gè) E_NOTICE 級(jí)別錯(cuò)誤兑燥。用負(fù)數(shù)下標(biāo)寫(xiě)入字符串時(shí)會(huì)產(chǎn)生一個(gè) E_NOTICE 級(jí)別錯(cuò)誤,用負(fù)數(shù)下標(biāo)讀取字符串時(shí)返回空字符串忍饰。寫(xiě)入時(shí)只用到了賦值字符串的第一個(gè)字符。用空字符串賦值則賦給的值是 NULL 字符寺庄。
$foo = 1 + "10.5"; // $foo is float (11.5)
$foo = 1 + "-1.3e3"; // $foo is float (-1299)
$foo = 1 + "bob-1.3e3"; // $foo is integer (1)
$foo = 1 + "bob3"; // $foo is integer (1)
$foo = 1 + "10 Small Pigs"; // $foo is integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2)
$foo = "10.0 pigs " + 1; // $foo is float (11)
$foo = "10.0 pigs " + 1.0; // $foo is float (11)
php在線面試題集:http://cainiaophp.com/
php面試討論群:536633782