亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語言

PHP中容易出錯的小細節(jié)

時間:2024-07-26 16:35:41 php語言 我要投稿
  • 相關推薦

PHP中容易出錯的小細節(jié)

  細節(jié)決定成敗,那么在PHP中有哪些小細節(jié)是容易出錯的呢?一起來看看吧!希望對大家有所幫助,更多內容請關注應屆畢業(yè)生網(wǎng)!

  注意echo和print的區(qū)別

  PHP中echo和print都是輸出的作用,但是兩者之間還是有細微的差別。echo輸出后沒有返回值,但print有返回值,當其執(zhí)行失敗時返回flase。因此可以作為一個普通函數(shù)來使用,例如執(zhí)行$r = print "Hello World"; 變量$r的值將為1。而且代碼中echo語句的運行效率要略快于print語句。

  注意空字符串('')和NULL的區(qū)別

  PHP中空字符串和NULL都是以值為0存儲的,但是他們的類型并不一樣,前者是string,而后者是NULL,可見字符串('')、NULL值相等但類型不等。

  分清==(等于)和===(全等于)的區(qū)別

  兩者都屬于比較運算符,==(等于)只比較值是否相等,而===(全等于)則不但比較值是否相等,還會比較類型是否相等,它更為嚴格。

  分清include與require的區(qū)別

  include()與require()的功能也基本相同,但在用法上也有一些不同,include()是有條件包含函數(shù),而require()則是無條件包含函數(shù)。例如在下面代碼中,如果變量$a為真,則將包含文件a.php。而require()則和include()不同,不管$a取何值,下面的代碼都會把文件a.php包含,比如:

  在錯誤處理方面,使用include語句,如果發(fā)生包含錯誤,程序將跳過include語句,雖然會顯示錯誤信息但是程序還是會繼續(xù)執(zhí)行。但是,require語句會提示一個致命錯誤。

  注意isset和 empty的區(qū)別

  empty是判斷一個變量是否為“空”,而isset則是判斷一個變量是否已經(jīng)被設置。

  分清self :: 和 this--> 的區(qū)別

  在訪問PHP類中的成員變量或方法時,如果被引用的變量或者方法被聲明成const(常量)或者static(靜態(tài)屬性),那么就必須使用域操作符::,而如果被引用的變量或者方法沒有被聲明成const或者static,那么就使用指向操作符->。

  foreach循環(huán)后留下懸掛指針

  這里有個問題很多人會迷糊。循環(huán)結束后,$value并未銷毀,$value其實是數(shù)組中最后一個元素的引用,這樣在后續(xù)對$value的使用中,如果不知道這一點,會引發(fā)一些莫名奇妙的錯誤:)看看下面這段代碼:

  上面代碼的運行結果如下:

  1,2,3

  1,2,3

  1,2,2

  你猜對了嗎?為什么是這個結果呢?

  我們來分析下。第一個循環(huán)過后,$value是數(shù)組中最后一個元素的引用。第二個循環(huán)開始:

  第一步:復制$arr[0]到$value(注意此時$value是$arr[2]的引用),這時數(shù)組變成[1,2,1]

  第二步:復制$arr[1]到$value,這時數(shù)組變成[1,2,2]

  第三步:復制$arr[2]到$value,這時數(shù)組變成[1,2,2]

  綜上,最終結果就是1,2,2

  避免這種錯誤最好的辦法就是在循環(huán)后立即用unset函數(shù)銷毀變量:

  忽略Unicode/UTF-8問題

  php編程中,在處理非ascii字符時,會遇到一些問題,要很小心的去對待,要不然就會錯誤遍地。舉個簡單的例子,strlen($name),如果$name包含非ascii字符,那結果就有些出乎意料。在此給出一些建議,盡量避免此類問題:

  最好使用mb_*函數(shù)來處理字符串,避免使用老的字符串處理函數(shù)。這里要確保PHP的“multibyte”擴展已開啟。

  數(shù)據(jù)庫和表最好使用unicode編碼。

  知道json_code()函數(shù)會轉換非ascii字符,但serialize()函數(shù)不會。

  php代碼源文件最好使用不含bom的utf-8格式。

【PHP中容易出錯的小細節(jié)】相關文章:

科目二中最容易出錯的三個小細節(jié)05-16

有關科目三容易出錯的細節(jié)參考09-13

駕考科目三容易出錯的情況細節(jié)10-03

駕考科目三容易出錯的細節(jié)是什么07-25

科目二考試易出錯的小細節(jié)08-31

托福中閱讀中最容易出錯的詞匯匯總09-08

科目二最易出錯的三個小細節(jié)07-01

最容易出錯的英語單詞08-25

科目二考試容易出錯點06-10

PHP小技巧07-12