1.單引號與雙引號的區(qū)別
一般用單引號或雙引號標識一個字符串牵署。單引號串與雙引號串篱蝇,在PHP中的處理是不同的辫诅。雙引號中的內(nèi)容可以被解釋并被替換,單引號串中的內(nèi)容則被作為普通字符處理佩抹。
例如:
$str=6;
echo "str is $str\n";
echo 'str is $str\n';
注:單引號中輸出的內(nèi)容是“所見即所得”的叼风,無論有無變量,都被當做普通字符原樣輸出棍苹。
說明:在定義簡單的字符串時无宿,使用單引號是一個更加合適的處理方式。如果使用雙引號枢里,php將花費一下時間來處理字符串的轉(zhuǎn)義和變量的解析孽鸡。因此,建議在定義字符串時栏豺,如果沒有特別的要求應盡量使用單引號彬碱。
2.注意echo和print的區(qū)別
PHP中echo和print都是輸出的作用,但是兩者之間還是有細微的差別奥洼。echo輸出后沒有返回值巷疼,但print有返回值,當其執(zhí)行失敗時返回flase灵奖。因此可以作為一個普通函數(shù)來使用嚼沿,例如執(zhí)行$r = print "Hello World"; 變量$r的值將為1。而且代碼中echo語句的運行效率要略快于print語句瓷患。
3.注意空字符串('')和NULL的區(qū)別
PHP中空字符串和NULL都是以值為0存儲的骡尽,但是他們的類型并不一樣,前者是string擅编,而后者是NULL爆阶,可見字符串('')、NULL值相等但類型不等沙咏。
4.分清==(等于)和===(全等于)的區(qū)別
兩者都屬于比較運算符辨图,==(等于)只比較值是否相等,而===(全等于)則不但比較值是否相等肢藐,還會比較類型是否相等故河,它更為嚴格。
5.分清self :: 和 this-> 的區(qū)別
在訪問PHP類中的成員變量或方法時吆豹,如果被引用的變量或者方法被聲明成const(常量)或者static(靜態(tài)屬性)鱼的,那么就必須使用域操作符::,而如果被引用的變量或者方法沒有被聲明成const或者static痘煤,那么就使用指向操作符->凑阶。
6.require 與include的區(qū)別
引用文件的方法有兩種:require 及 include。兩種方式提供不同的使用彈性衷快。
require的使用方法如require("MyRequireFile.php");宙橱。這個函數(shù)通常放在 PHP 程序的最前面,PHP 程序在執(zhí)行前,就會先讀入 require 所指定引入的文件师郑,使它變成 PHP 程序網(wǎng)頁的一部份环葵。常用的函數(shù),亦可以這個方法將它引入網(wǎng)頁中宝冕。
include使用方法如include("MyIncludeFile.php");张遭。這個函數(shù)一般是放在流程控制的處理部分中。PHP 程序網(wǎng)頁在讀到 include 的文件時地梨,才將它讀進來菊卷。這種方式,可以把程序執(zhí)行時的流程簡單化宝剖。
他們兩個的用途是完全一樣的的烁,不一定非得哪個放在最前面哪個放在中間。他們最根本的區(qū)別在于錯誤處理的方式不一樣诈闺。
require一個文件存在錯誤的話渴庆,那么程序就會中斷執(zhí)行了,并顯示致命錯誤
include一個文件存在錯誤的話雅镊,那么程序不會中端襟雷,而是繼續(xù)執(zhí)行,并顯示一個警告錯誤仁烹。
以下為補充:
(1). include有返回值耸弄,而require沒有。
(2). include()包括并運行指定文件 在處理失敗時include() 產(chǎn)生一個警告,被導入的程序代碼都會被執(zhí)行卓缰,而且這些程序在執(zhí)行的時候會擁有和源文件中呼叫到include()語句的位置相同的變量范圍计呈。你可以導入同一個服務器中的靜態(tài)頁面。
(3). include_once()的作用和include()是幾乎相同的
唯一的差別在于include_once()會先檢查要導入的檔案是不是已經(jīng)在該程序中的其它地方被導入過了征唬,如果有的話就不會再次重復導入(這項功能有時候是很重要的捌显,比方說要導入的里面宣告了一些你自行定義好的函數(shù),那么如果在同一個程序重復導入這個文件总寒,在第二次導入的時候便會發(fā)生錯誤訊息扶歪,因為PHP不允許相同名稱的函數(shù)被重復宣告第二次)。
(4). require()會將目標文件的內(nèi)容讀入摄闸,并且把自己本身代換成這些讀入的內(nèi)容 在處理失敗時require() 則導致一個致命錯善镰。
這個讀入并且代換的動作是在PHP引擎編譯你的程序代碼的時候發(fā)生的,而不是發(fā)生在PHP引擎開始執(zhí)行編譯好的程序代碼的時候(PHP 3.0引擎的工作方式是編譯一行執(zhí)行一行年枕,但是到了PHP 4.0以后就有所改變了炫欺,PHP 4.0是先把整個程序代碼全部編譯完成后,再將這些編譯好的程序代碼一次執(zhí)行完畢熏兄,在編譯的過程中不會執(zhí)行任何程序代碼)品洛。require()通常來導入靜態(tài)的內(nèi)容树姨,而include()則適合用導入動態(tài)的程序代碼。
(5). 如同include_once()毫别,require_once()會先檢查目標文件的內(nèi)容是不是在之前就已經(jīng)導入過了,如果是的話典格,便不會再次重復導入同樣的內(nèi)容岛宦。
(6). require是無條件包含也就是如果一個流程里加入require,無論條件成立與否都會先執(zhí)行require。
(7). require通常放在PHP程序的最前面耍缴,PHP程序在執(zhí)行前砾肺,就會先讀入require所指定引入的文件,使它變成PHP程序網(wǎng)頁的一部份防嗡。常用的函數(shù)变汪,亦可以這個方法將它引入網(wǎng)頁中。
(8). include一般是放在流程控制的處理部分中PHP程序網(wǎng)頁在讀到include的文件時蚁趁,才將它讀進來裙盾。這種方式可以把程序執(zhí)行時的流程簡單化。