碎碎念
記錄一些PHP中字符串的學(xué)習(xí)記錄残炮。
雙引號和單引號的區(qū)別
- 雙引號可以用來解析變量,單引號不解析變量缩滨。所以势就,如果純輸出字符串,單引號的效率會高一些楷怒;
- 雙引號會解析內(nèi)部所有的轉(zhuǎn)義符蛋勺,單引號則僅僅解析
\\
與\'
;
花括號的運(yùn)用
- 劃分變量的界限
PHP在解析到$時會盡可能多的標(biāo)識來解析一個變量鸠删,可以用大括號把變量括起來可以讓變量成為一個整體抱完,明確變量名的界限,后面還可以加其它字符串刃泡,避免解析錯誤巧娱。注意,花括號之間不能有空格烘贴。
<?php
echo "我的名字是{$username}哈哈哈哈";
- 字符串增刪改查
需要注意:
- 字符串下標(biāo)從0開始
- 也可以用
[]
達(dá)到同樣的效果 - 只能用一個字符修改一個字符禁添,
$str{1}='hello'
只能取字符h - 不適合使用中文這種多字節(jié)編碼的語言
<?php
$str = 'Hello World';
echo $str{1}; // e
$str{1}=''; // 刪除操作,其實只是替換桨踪,長度并沒有改變
$str{1}='h'; // 更新操作
$str{11}=';'; // 增加操作
echo $str{mt_rand(0, strlen($str)-1)}; // 隨機(jī)出現(xiàn)一個字母
heredoc/nowdoc
當(dāng)有大段內(nèi)容時可以采用EOF大段內(nèi)容的寫法老翘。如果字符串中需要解析變量,可以使用heredoc锻离,否則使用nowdoc铺峭。
heredoc相當(dāng)于雙引號的功能,可以解析變量汽纠,語法如下:
<?php
<<<xxx
內(nèi)容......
xxx;
需要注意:
- 結(jié)束符前面不能有任何內(nèi)容卫键,制表符空格都不行;
- 標(biāo)示名只能包含字母虱朵,數(shù)字莉炉,下劃線钓账,必須以字母,下劃線開始絮宁;
- 內(nèi)部內(nèi)容不用考慮單雙引號梆暮;
- PHP5.3后標(biāo)示符名稱可以用雙引號擴(kuò)起來;
nowdoc只是把標(biāo)示符名稱放在單引號內(nèi)羞福,不解析變量和轉(zhuǎn)義符惕蹄。
字符串類型轉(zhuǎn)換
- 數(shù)值echo后還是數(shù)值本身
- 布爾值echo后,true轉(zhuǎn)換為1治专,false轉(zhuǎn)換為空字符串
- null也轉(zhuǎn)換為空字符串
- echo array(1,2,3,4,5);卖陵,返回字符串的Array
- 資源轉(zhuǎn)換,
$handle=fopen('str.text', 'r'); var_dump($handle)
张峰,返回resource of type(stream)
泪蔫,此時直接echo資源則返回Resource id #3
- 對象不能直接轉(zhuǎn)換為字符串,會包致命錯誤
強(qiáng)制轉(zhuǎn)換
- 臨時轉(zhuǎn)換
即不改變原變量的類型喘批,(string)
與strval()
<?php
$var=123;
$res=(string)$var;
var_dump($res); // string(3) "123"
$boo=true
var_dump(strval($boo)); // string(1) "1"
同樣的撩荣,布爾類型會轉(zhuǎn)換成變量"1"
;false會轉(zhuǎn)換成""
饶深;
- 永久轉(zhuǎn)換
settype()
與gettype()
餐曹。
$var='gaohang';
$var1=123;
echo gettype($val); // string
echo gettype($var1); // integer
settype($varq,'string');
- 數(shù)字與字符串相加規(guī)律
如圖,如果數(shù)字遇到完全的字符串敌厘,則字符串為0台猴,若字符串首位為合法數(shù)字,則取首位的數(shù)字俱两。
- string轉(zhuǎn)換為布爾類型
有以下幾種情況會被轉(zhuǎn)換為false饱狂,大致可以記憶為字符串或字符串的0:
- null
- ""
- "0" // "0.0"為真
- 0;
- 0.0
- array()