怎么理解php語言匯總

網絡整理 分享 時間: 收藏本文

怎么理解php語言匯總

每個人都曾試圖在平淡的學習、工作和生活中寫一篇文章。寫作是培養人的觀察、聯想、想象、思維和記憶的重要手段。相信許多人會覺得范文很難寫?下面我給大家整理了一些優秀范文,希望能夠幫助到大家,我們一起來看一看吧。

怎么理解php語言篇一

我們編寫程序時,無論怎樣小心謹慎,犯錯總是在所難免的。這些錯誤通常會迷惑php編譯器。如果開發人員無法了解編譯器報錯信息的含義,那么這些錯誤信息不僅毫無用處,還會常常讓人感到沮喪。

編譯php腳本時,php編譯器會盡其所能報告它遇到的第一個問題。這樣就產生一個問題:只有當錯誤出現時,php才能將它識別出來(本文后面對此問題進行了詳細描述)。正是由于這個緣故,編譯器指出出錯的那行,從表面上看來可能語法正確無誤,或者可能是根本就不存在的一行!

下面就來看看小編給大家分享的正確理解php程序編譯時的錯誤信息吧。

要搞清楚編譯器為什么會報告某一行上存在錯誤,首先必須明確編譯器解析php代碼的機制。我并不打算在本文中對此進行詳細論述,但是,我們將會討論一些更易于引發錯誤的簡單概念。

如果在一條語句中聲明一個變量,具體方式如下所示:

$variable = 'value';

編譯器首先求出語句右半部分的值(即等號右邊的所有內容)。在一些編程書籍中,將此表示為語句的 rhs (右半部分)。恰恰正是語句的這一部分常常會引發錯誤。如果使用的語法不正確,就會出現解析錯誤。

parse error:解析錯誤,unexpected t_while in c:\program files\apache group\apache\htdocs\ on line 19

每次確定了前一錯誤時,解析錯誤一個接一個地不斷出現。因為php在第一個解析錯誤之后就停止執行腳本,調試并糾正這一系列的錯誤往往會讓人覺得特別厭煩。

而且,解析錯誤具有很少的信息,幾乎不報告錯誤所在的行號。具體原因就是當出現錯誤時,編譯器判定好幾行的語法看起來應該是有效的,直至遇到無效的語法,最可能的情形就是表達式中使用了預定義的字詞,例如;

while = 10; // bad ? while 就是一個預定義字詞,不能分配給一個值

預定義的字詞包括 while、function等,如果php使用 uses to evaluate your code. 您不能使用這些預定義字詞來命名變量,而且如果您非要這樣做的話,php就會報出更多的錯誤,這是您無法忍受。

關于這個問題,下面的示例可能會對您有所幫助。請咨詢閱讀一下下面所示的php 代碼:

<?php?

錯誤位于$b =一行(在語句的末端缺少分號),所以錯誤應該是解析錯誤:第3行缺少分號對吧?而不應該依據解析器判定的:

parse error: parse error, unexpected t_if in c:\program files\apache

在第4行,if() 語句的語法是正確的。那么,編譯器是被什么給搞糊涂了呢?線索就是unexpected t_if 部分。出現 unexpected t_???錯誤時,它所表示的含義為:編譯器發現在預定義字不應該出現的位置出現。t_if 代表 if(), t_while 代表 while(), t_for 代表 for()等。

值得慶幸的是,一些錯誤的原因也很簡單:

語句沒有使用分號(;)結束,比如上面的示例。字符串中缺少引號。

我見過的最常見的錯誤就是,當沒有使用大括號( } )結束一個函數或者一個循環時出現的錯誤,這很可能是最常見,最讓人煩的錯誤。

具體代碼如下:

function uselessfunction() {?

將產生下列錯誤:

parse error: parse error, unexpected $ in c:\program files\apache?

由于函數 uselessfunction 沒有使用大括號( } )來結束,php編譯器不斷查找表示結束的大括號直至到達文件末尾為止。因為編譯器未找到一個匹配的大括號,就會報告文件末尾處有錯誤。

如果正確地反映了代碼的層次結構,錯誤信息就會變得非常明顯。如果沒有標明代碼的層次結構,那么最后要想查清楚到底忘記了什么也會變得幾乎是不可能的。所以,請記住,一定要標明代碼的層次結構。tab鍵可以很容易地實現這一點。對后續的開發人員來說,把握代碼框架并對其進行修改也會更容易一些。

另一極其令人討厭的錯誤信息就是最常見的mysql錯誤,這常常使 php新手感到頗為頭疼: warning: supplied argument is not a valid mysql result resource in...

上面所報告有錯的一行可能是:

while($row = mysql_fetch_array($result)) {

參數 $result并不是一個有效的'資源。在英語中它表示因為查詢失敗,將無法處理mysql_fetch_array。任一查詢的語法無效(您應該將查詢復制-粘貼到mysql 控制臺參考來進行測試),或者與數據庫的連接失敗(這種情況下您應該再次檢查用戶名和口令等)。

第一步,智能代碼器可采取以下幾步來消除下列錯誤出現:

· 在每一條語句的末尾處,不必考慮添加分號——這應該成為一種習慣。

· 總是要盡可能標明代碼的層次結構,這可以使您能夠查看是否忘記在if 調用或函數末端等位置添加大括號。

· 請使用可突出顯示語法的編輯器(如 html-kit)。有了這類編輯器的輔助,您就能確定是否忘記了添加引號,是否缺少分號等。

本文我們對php編譯器可報出的一些看起來可能沒有什么意義的錯誤有了一定的了解。我們需要將所學的知識應用到如何避免錯誤以及錯誤出現時如何糾正錯誤。調試是一個開發人員所有工作中的最重要的部分之一。提高調試效率可大大加快整個工作的進度,縮短完成一項工程所需花費的時間,同時還可以明顯減輕代碼失敗所帶來的精神壓力。

s("content_relate");

【正確理解php程序編譯時的錯誤信息】相關文章:

linux下編譯c語言程序

09-28

php擴展程序講解

09-30

如何加速你的php程序

09-23

增強php程序安全的函數

09-15

php程序性能優化的方法

09-24

php開發網站程序的優點

09-14

php程序員就職心態

09-25

優化php程序laravel 5框架的技巧

09-20

細數php程序的一些缺陷

09-15

主站蜘蛛池模板: 国产精品va在线观看无码| 高清中文字幕视频在线播| 97色伦图片97综合影院久久| 两个人看的www免费| 一边摸一边爽一边叫床免费视频| 一级做a爱片久久毛片| fuqer2018| 67194熟妇在线观看线路1| 91av中文字幕| 香蕉在线精品视频在线观看6| 色老二精品视频在线观看| 精品福利一区二区三区免费视频| 男人和女人在床做黄的网站| 欧美色图校园春色| 最近中文字幕最新在线视频| 无遮挡亲胸捏胸激吻视频| 小爱同学下载二三三乐园 | 国产成人综合亚洲绿色| 国产AV一区二区三区传媒| 免费va在线观看| 国产女人喷潮视频在线观看| 含羞草影院视频播放| 亚洲综合区小说区激情区| 亚洲午夜成激人情在线影院| 久久久久久网站| 99热这里只有精品国产动漫| 国产喷水女王在线播放| 美女露胸视频网站| 狠狠躁夜夜躁人人爽天天古典| 欧美视频www| 我的好妈妈6中字在线观看韩国| 夜栋病勤1一12在线观看| 国产成人免费全部网站| 全彩本子acg里番本子| 亚洲午夜久久久影院伊人| 中文字幕第一页在线播放| 99xxoo视频在线永久免费观看| 国产成人愉拍精品| 精品91一区二区三区| 欧美一区二区三区高清不卡tv| 日韩精品无码人成视频手机|