PHP 第二節(jié) 數(shù)據(jù)類型之字符串類型
Jun 13, 2016 pm 12:01 PM
PHP中一個(gè)字符串可以通過下面的4種方式來定義:
- 單引號(hào)
- 雙引號(hào)
- heredoc 語法結(jié)構(gòu)
- nowdoc 語法結(jié)構(gòu) (自PHP 5.3.0以后)
單引號(hào)
定義一個(gè)字符串 的最簡(jiǎn)單的方法是用單引號(hào)把它包圍起來 (標(biāo)點(diǎn)符號(hào) ')。
如果想要輸出一個(gè)單引號(hào),需在它的前面加個(gè)反斜線 (\)。在單引號(hào)前或在字符串的結(jié)尾處 想要輸出反斜線,輸入兩條 (\\)。注意,如果在任何其它的字符前加了反斜線,反斜線將會(huì)被直接輸出。
Note: 不像雙引號(hào) 和heredoc語法結(jié)構(gòu), 在單引號(hào)字符串中的變量 和特殊含義的字符將不會(huì)被替換。
如果字符串是包圍在雙引號(hào)(")中, PHP將對(duì)一些轉(zhuǎn)義字符進(jìn)行解析,和單引號(hào)字符串一樣, 如果輸出轉(zhuǎn)義字符之外的字符,反斜線會(huì)被打印出來。 PHP5.1.1以前,\{$var} 中的反斜線還不會(huì)被顯示出來。
用雙引號(hào)定義的 字符串最重要的特征是變量會(huì)被執(zhí)行。
Heredoc結(jié)構(gòu)
第三種定義字符串的方法是用heredoc句法結(jié)構(gòu):。在該提示 符后面,要定義個(gè)標(biāo)識(shí)符,然后是一個(gè)新行。接下來是字符串本身,最后要用前面定義的標(biāo)識(shí)符作為結(jié)束標(biāo)志。
結(jié)束時(shí)所引用的標(biāo)識(shí)符必須在一行的開始位置, 而且,標(biāo)識(shí)符的命名也要像其它標(biāo)簽一樣遵守PHP的規(guī)則:只能包含 字母、數(shù)字和下劃線,并且不能用數(shù)字和下劃線作為開頭。
Warning要注意的是結(jié)束標(biāo)識(shí)符這行除了 可能有一個(gè)分號(hào)(;)外,絕對(duì)不能包括 其它字符。這意味著標(biāo)識(shí)符不能縮進(jìn),分號(hào)的前后也不能有任何空白或tabs。更重要的是結(jié)束標(biāo)識(shí)符的前面必須是個(gè)被本地 操作系統(tǒng)認(rèn)可的新行標(biāo)簽,比如在UNIX和Mac OS X系統(tǒng)中是\n ,而結(jié)束標(biāo)識(shí)符(可能有個(gè)分號(hào))的后面也必須跟個(gè) 新行標(biāo)簽。
如果不遵守該規(guī)則導(dǎo)致結(jié)束標(biāo)簽不“干凈”,PHP將認(rèn)為它不是結(jié)束標(biāo)識(shí)符而繼續(xù)尋找。如果在文件結(jié)束前也沒有找到一個(gè)正確的結(jié)束標(biāo)識(shí)符,PHP將會(huì)在最后一 行產(chǎn)生一個(gè)句法錯(cuò)誤。
Heredoc結(jié)構(gòu)就象是沒有使用雙引號(hào)的雙引號(hào)字符串, 這就是說在heredoc結(jié)構(gòu)中引號(hào)不用被替換,但是上文中列出的字符 (\n等)也可使用。 變量將被替換,但在heredoc結(jié)構(gòu)中字符串表達(dá)復(fù)雜變量時(shí),要格外小心。
Nowdoc結(jié)構(gòu)
就象heredoc結(jié)構(gòu)類似于雙引號(hào)字符串,Nowdoc結(jié)構(gòu)是類似于單引號(hào)字符串的。Nowdoc結(jié)構(gòu)很象heredoc結(jié)構(gòu),但是 nowdoc不進(jìn)行解析操作 。 這種結(jié)構(gòu)很適合用在不需要進(jìn)行轉(zhuǎn)義的PHP代碼和其它大段文本。與SGML的 結(jié)構(gòu)是用來聲明大段的不用解析的文本類似,nowdoc結(jié)構(gòu)也有相同的特征。
一個(gè)nowdoc結(jié)構(gòu)也用和heredocs結(jié)構(gòu)一樣的標(biāo)記 , 但是跟在后面的標(biāo)志符要用 單引號(hào)括起來,就像這樣。heredocs結(jié)構(gòu)的所有規(guī)則也同樣適用于nowdoc結(jié) 構(gòu),尤其是結(jié)束標(biāo)志符的規(guī)則。
變量解析
當(dāng)字符串用雙引號(hào)或heredoc結(jié)構(gòu)定義時(shí),其中的變 量將會(huì)被解析。
這里共有兩種語法規(guī)則:一種簡(jiǎn)單 規(guī)則,一種復(fù)雜規(guī) 則。簡(jiǎn)單的句法規(guī)則是最常用和最方便的, 它可以用最少的代碼在一個(gè)字符串中加入變量, 數(shù)組 值,或 對(duì)象屬性。
復(fù)雜的句法規(guī)則是在PHP4以后加入的,被花括號(hào)包圍的表達(dá)式是其明顯標(biāo)記。
簡(jiǎn)單句法規(guī)則
當(dāng)PHP解析器遇到一個(gè)美元符號(hào) ($) , 它會(huì)和其它很多解析器一樣,去盡量形成一個(gè)合法的變量名??梢杂没ɡ?號(hào)來明確變量名的界線。
?
如果想要表達(dá)更復(fù)雜的結(jié)構(gòu),請(qǐng)用復(fù)雜句法規(guī)則。
?
復(fù)雜句法規(guī)則
?
復(fù)雜句法規(guī)則不是結(jié)構(gòu)復(fù)雜而命名,而是因?yàn)樗梢允褂脧?fù)雜的表達(dá)式。
任何想用在字符串中標(biāo)量變量,數(shù)組變量或?qū)ο髮傩远伎墒褂眠@種方法。 只需簡(jiǎn)單地像在字符串以外的地方那樣寫出表達(dá)式, 然后用花括號(hào){和 }把它括起來。 由于 { 無法被轉(zhuǎn)義,只有 $ 要緊挨著 {才會(huì)被認(rèn)出來,可以用 {\$ 來表達(dá) {$。
?
存取和修改字符串中的字符
?
字符串中的字符可以通過一個(gè)以0為開始的,用類似數(shù)組結(jié)構(gòu)中的方括號(hào)包含對(duì)應(yīng)的數(shù)字來查找和修改,比如 $str[42], 可以把 字符串想像數(shù)組 。 函數(shù) substr() 和 substr_replace()可以用來實(shí)現(xiàn)多于一個(gè)字符 的情況。
?
E_NOTICE
級(jí)別錯(cuò)誤,負(fù)數(shù)在寫入時(shí)會(huì)產(chǎn)生一個(gè)E_NOTICE
,但讀 取的是空字符串。被指定的字符串只有第一個(gè)字符可用,空字符串用指定為空字節(jié)。?
有用的函數(shù)和操作符
字符串可以用'.' (點(diǎn)) 操作符連接起來, 注意 '+' (加號(hào)) 操作符沒有 這個(gè)功能。?
對(duì)于字符串的操作有很多有用的函數(shù)。
可以參考 字符串函數(shù) 了解大部分函數(shù), 高級(jí)的查找&替換功能可以參考 正則表達(dá)式函數(shù) 或 Perl類型的正則 表達(dá)式函數(shù)。
另外還有URL字符串的函數(shù), 也有加密/解密字符串的函數(shù)。 (mcrypt 和 mhash).
最后,可以參考 字符類型函數(shù)。
?
轉(zhuǎn)換成字符串
?
一個(gè)值可以通過在其前面加上(string)或用strval()函數(shù)來轉(zhuǎn)變成 字符串。 在一個(gè)需要字符串的表達(dá)式中,字符串會(huì)自動(dòng)轉(zhuǎn)變,比如在使用函數(shù) echo 或 print 時(shí), 或在一個(gè)變量和一個(gè) 字符串 進(jìn)行比較時(shí),就會(huì)發(fā)生這種轉(zhuǎn)變 類型 和 類型轉(zhuǎn)換 可以更好的解釋下面的事情,也可參考函 數(shù) settype() 。
?
一個(gè)boolean TRUE
值被轉(zhuǎn)換成 字符串"1"。 Boolean FALSE
被轉(zhuǎn)換成"" (空的字符串)。 這種轉(zhuǎn)變可以在 boolean 和 字符串 之間往返進(jìn)行。
?
一個(gè) 整數(shù) 或 浮點(diǎn)數(shù) 被轉(zhuǎn)變?yōu)閿?shù)字的字面樣式的字符串 (包括 浮點(diǎn)數(shù)中的指數(shù)部分),使用指數(shù)計(jì)數(shù)法的浮點(diǎn)數(shù) (4.1E+6)也可轉(zhuǎn)變。
數(shù)組轉(zhuǎn)換成 字符串 "Array",因此, echo 和 print c無法顯示出該數(shù)組的值。如果顯示一個(gè)數(shù)組值,可以用 echo $arr['foo']這種結(jié)構(gòu),更多內(nèi)容見下文。
在PHP 4中對(duì)象被轉(zhuǎn)換成 字符串 "Object", 為了調(diào)試原因需要打印出對(duì)象的值,方法見正文。為了得到對(duì)象的類的名稱,可以用 get_class() 函數(shù)。 在PHP5中, 可以用 __toString 。
資源總會(huì)被轉(zhuǎn)變成"Resource id #1"這種結(jié)構(gòu)的字符串 , 其中的 1 是PHP分配給該資源的獨(dú)特?cái)?shù)字。不用過多關(guān)注這種結(jié)構(gòu),它馬上要轉(zhuǎn)變了。為了得到一個(gè) resource類型,可以用函數(shù) get_resource_type()。
NULL
總是被轉(zhuǎn)變成空的字符串。
如上面所說的,直接把數(shù)組, 對(duì)象或 資源 轉(zhuǎn)換成 字符串 不會(huì)得到超出其自身的更多信息??梢允褂煤瘮?shù) print_r() 和 var_dump() 列出這些類型的內(nèi)容。
大部分的PHP值可以轉(zhuǎn)變成 字符串s 來長(zhǎng)期儲(chǔ)存,這被稱作串行化,可以用函數(shù) serialize() 來實(shí)現(xiàn)。 如果PHP引擎設(shè)定支持 WDDX , PHP值也可儲(chǔ)存成XML格式。
字符串轉(zhuǎn)變成數(shù)字
當(dāng)一個(gè)字符串被用在了一個(gè)數(shù)字的環(huán)境中,結(jié)果和類型如下:
如果字符串沒有包含 '.','e'或'E' 并且數(shù)字值符合整數(shù)類型的限定 ( PHP_INT_MAX
定義的), 這個(gè) 字符串 可被認(rèn)定是一個(gè) integer, 在其它情況下被認(rèn)定為一個(gè)float。
字符串的開始部分給定了它的值,如果 字符串 以合法的數(shù)字開始,這個(gè)數(shù)字可直接使用。 否則,值就是 0 (零)。 合法數(shù)值由符號(hào),后面跟著一個(gè)或多個(gè)數(shù)字(可能有個(gè)小數(shù)點(diǎn)),再跟著可選的指數(shù)符號(hào)如'e' 或 'E',后面跟著一個(gè)或多個(gè)數(shù)字。
不要想像在C語言中的那樣,通過一個(gè)整數(shù)轉(zhuǎn)換得到相應(yīng)字符,使用函數(shù) ord() 和 chr() 實(shí)現(xiàn)ASCII碼和字符間的轉(zhuǎn)換。

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

PHP設(shè)置的關(guān)鍵在於明確安裝方式、配置php.ini、連接Web服務(wù)器及啟用必要擴(kuò)展。 1.安裝PHP:Linux用apt、Mac用Homebrew、Windows推薦XAMPP;2.配置php.ini:調(diào)整錯(cuò)誤報(bào)告、上傳限制等並重啟服務(wù)器;3.搭配Web服務(wù)器:Apache通過mod_php,Nginx使用PHP-FPM;4.安裝常用擴(kuò)展:如mysqli、json、mbstring等以支持完整功能。

寫好PHP註釋的關(guān)鍵在於明確目的與規(guī)範(fàn),註釋應(yīng)解釋“為什麼”而非“做了什麼”,避免冗餘或過於簡(jiǎn)單。 1.使用統(tǒng)一格式,如docblock(/*/)用於類、方法說明,提升可讀性與工具兼容性;2.強(qiáng)調(diào)邏輯背後的原因,如說明為何需手動(dòng)輸出JS跳轉(zhuǎn);3.在復(fù)雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標(biāo)記待辦事項(xiàng)與問題,便於後續(xù)追蹤與協(xié)作。好的註釋能降低溝通成本,提升代碼維護(hù)效率。

註釋不能馬虎是因?yàn)樗忉尨a存在的原因而非功能,例如兼容老接口或第三方限制,否則看代碼的人只能靠猜。必須加註釋的地方包括複雜的條件判斷、特殊的錯(cuò)誤處理邏輯、臨時(shí)繞過的限制。寫註釋更實(shí)用的方法是根據(jù)場(chǎng)景選擇單行註釋或塊註釋,函數(shù)、類、文件開頭用文檔塊註釋說明參數(shù)與返回值,並保持註釋更新,對(duì)複雜邏輯可在前面加一行概括整體意圖,同時(shí)不要用註釋封存代碼而應(yīng)使用版本控制工具。

易於效率,啟動(dòng)啟動(dòng)tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)

寫好PHP註釋的關(guān)鍵在於清晰、有用且簡(jiǎn)潔。 1.註釋應(yīng)說明代碼背後的意圖而非僅描述代碼本身,如解釋複雜條件判斷的邏輯目的;2.在魔術(shù)值、舊代碼兼容、API接口等關(guān)鍵場(chǎng)景添加註釋以提升可讀性;3.避免重複代碼內(nèi)容,保持簡(jiǎn)潔具體,並使用標(biāo)準(zhǔn)格式如PHPDoc;4.註釋需與代碼同步更新,確保準(zhǔn)確性。好的註釋應(yīng)站在他人角度思考,降低理解成本,成為代碼的理解導(dǎo)航儀。

PHPblockcommentsareusefulforwritingmulti-lineexplanations,temporarilydisablingcode,andgeneratingdocumentation.Theyshouldnotbenestedorleftunclosed.BlockcommentshelpindocumentingfunctionswithPHPDoc,whichtoolslikePhpStormuseforauto-completionanderrorche

寫好註釋的關(guān)鍵在於說明“為什麼”而非僅“做了什麼”,提升代碼可讀性。 1.註釋應(yīng)解釋邏輯原因,例如值選擇或處理方式背後的考量;2.對(duì)複雜邏輯使用段落式註釋,概括函數(shù)或算法的整體思路;3.定期維護(hù)註釋確保與代碼一致,避免誤導(dǎo),必要時(shí)刪除過時(shí)內(nèi)容;4.在審查代碼時(shí)同步檢查註釋,並通過文檔記錄公共邏輯以減少代碼註釋負(fù)擔(dān)。

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre
