编写程序时,无论怎样小心谨慎,犯错总是在所难免的。这些错误通常会迷惑PHP编译器。如果开发人员无法了解编译器报错信息的含义,那么这些错误信息不仅毫无用处,还会常常让人感到沮丧。编译PHP脚本时,PHP编译器会尽其所能报告它遇到的第一个问题。这样就产生一个问题:只有当错误出现时,PHP才能将它识别出来(本文后面对此问题进行了详细描述)。正是由于这个缘故,编译器指出出错的那行,从表面上看来可能语法正确无误,或者可能是根本就不存在的一行!更好地理解错误信息可以大大节省确定并改正错误内容所花费的时间。因此,在本文中,我将努力阐明多种不同类型的PHP报错信息,以及在开发过程中如何正确理解各种报错信息的含义。本文中所讲述的内容与您所应用的PHP的版本无关,因为本文所描述的各种错误并不限定于某一特殊版本的特定错误。另外我们假定您是一位初级或者中级程序员,并已经从事编程工作有半年或一年的时间。编译器的工作方式要搞清楚编译器为什么会报告某一行上存在错误,首先必须明确编译器解析PHP代码的机制。我并不打算在本文中对此进行详细论述,但是,我们将会讨论一些更易于引发错误的简单概念。变量声明如果在一条语句中声明一个变量,具体方式如下所示:$variable = 'value';编译器首先求出语句右半部分的值(即等号右边的所有内容)。在一些编程书籍中,将此表示为语句的 RHS (右半部分)。恰恰正是语句的这一部分常常会引发错误。如果使用的语法不正确,就会出现解析错误。解析错误Parse error:解析错误,unexpected T_WHILE in c://program files//apache group//apache//htdocs//script.php on line 19每次确定了前一错误时,解析错误一个接一个地不断出现。因为PHP在第一个解析错误之后就停止执行脚本,调试并纠正这一系列的错误往往会让人觉得特别厌烦。而且,解析错误具有很少的信息,几乎不报告错误所在的行号。具体原因就是当出现错误时,编译器判定好几行的语法看起来应该是有效的,直至遇到无效的语法,最可能的情形就是表达式中使用了预定义的字词,例如;while = 10; // Bad ? while 就是一个预定义字词,不能分配给一个值预定义的字词包括 while、function等,如果PHP使用 uses to evaluate your code. 您不能使用这些预定义字词来命名变量,而且如果您非要这样做的话,PHP就会报出更多的错误,这是您无法忍受。关于这个问题,下面的示例可能会对您有所帮助。请咨询阅读一下下面所示的PHP 代码:$b = somevalueif($b == somevalue){print Hello world!;}?>错误位于$b =一行(在语句的末端缺少分号),所以错误应该是解析错误:第3行缺少分号对吧?而不应该依据解析器判定的:Parse error: parse error, unexpected T_IF in c://program files//apachegroup//apache//htdocs//ereg2.php on line 4在第4行,if() 语句的语法是正确的。那么,编译器是被什么给搞糊涂了呢?线索就是unexpected T_IF 部分。出现 unexpected T_???错误时,它所表示的含义为:编译器发现在预定义字不应该出现的位置出现。T_IF 代表 if(), T_WHILE 代表 while(), T_FOR 代表 for()等。值得庆幸的是,一些错误的原因也很简单:语句没有使用分号(;)结束,比如上面的示例。字符串中缺少引号。其他一些常见的错误我见过的最常见的错误就是,当没有使用大括号( } )结束一个函数或者一个循环时出现的错误,这很可能是最常见,最让人烦的错误。具体代码如下:function UselessFunction() {for($i < 0; $i < 10; $i++){}将产生下列错误:Parse error: parse error, unexpected $ in c://program files//apachegroup//apache//htdocs//ereg2.php on line 9由于函数 UselessFunction 没有使用大括号( } )来结束,PHP编译器不断查找表示结束的大括号直至到达文件末尾为止。因为编译器未找到一个匹配的大括号,就会报告文件末尾处有错误。如果正确地反映了代码的层次结构,错误信息就会变得非常明显。如果没有标明代码的层次结构,那么最后要想查清楚到底忘记了什么也会变得几乎是不可能的。所以,请记住,一定要标明代码的层次结构。Tab键可以很容易地实现这一点。对后续的开发人员来说,把握代码框架并对其进行修改也会更容易一些。MySQL 错误另一极其令人讨厌的错误信息就是最常见的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程序编译中常见错误信息及解释
来源:互联网 发布日期:2016-03-24 20:00:24 浏览:2282次
相关内容
AiLab云推荐
最新资讯
- 马斯克:可能在明年年底前出售特斯拉人形机器人 Optimus
- 苹果中国工厂回收机器人首次露面,规避了哪些电子回收弊端?
- 特斯拉或将在2025年底前销售人形机器人Optimus,机器人100ETF(159530)一度涨超1%
- 马斯克:“擎天柱”机器人仍在试验阶段 最早明年年底上市
- 马斯克称最快明年底前开卖人形机器人Optimus!网友:真能那么快吗?
- 外媒:马斯克透露,“擎天柱”机器人仍在试验阶段,最早明年年底上市
- 投资300亿!机器人产业爆发:几大趋势
- 人形机器人公司星动纪元携手临港集团,其“小星家族”获姚期智点赞
- 因会产生烧焦气味,日本世嘉玩具公司召回猫咪机器人
- AI Pioneers|星海图高继扬:人形机器人不是具身智能的唯一答案
本月热点
- 人形机器人崛起:OpenAI、微软洽谈投资Figure AI,望募资5亿美元
- OpenAI 悄悄升级 ChatGPT:可在对话中调用不同的自定义聊天机器人 | 懂点AI
- 麒麟信安入股超能机器人 或尝试打开新业绩增长点?公司最新回应来了
- Limbic开发AI心理咨询机器人,帮用户避免与人类交流可能引发的焦虑感
- 灿瑞科技:已有产品应用于消费级机器人领域
- 英伟达官宣AI聊天机器人,本地RTX显卡运行,这是要挑战OpenAI?
- 人形机器人企业暂时得救了
- Meta联合研发家务机器人,能在零人力帮助下自主整理房间
- 端到端纯视觉!OpenAI押注的人形机器人献艺拜年了
- 波士顿动力 Atlas 机器人能力升级,可灵活搬运汽车零件
热门排行
-
斯坦福家政机器人火了但又翻车了!多数是真人操控编排的
阅读量:165342
-
斯坦福团队发布新机器人Mobile Aloha,人形机器人将迎来产业元年?
阅读量:163010
-
我的同事是 GPT-4 机器人,我们在 Slack 上一起工作
阅读量:159435
-
谷歌起草“机器人宪法”,以确保 AI 机器人不会伤害人类
阅读量:157575
-
人形机器人崛起:OpenAI、微软洽谈投资Figure AI,望募资5亿美元
阅读量:101736
-
大疆回应停售青少年教育产品:将资源聚焦在大学生高校机器人赛事
阅读量:65393
推荐内容
- 2024第三十二届中国(深圳)国际礼品及家居用品展览会(深圳礼品展)
- 2024第二十届中国(上海)国际医疗旅游展览会
- 2024年科隆东盟少儿用品展览会 (Kind+Jugen ASEAN 2024)
- 2024中国(太原)国际锂电池技术设备展览会
- 海名·2024第九届西安餐饮供应链博览会
- 2024年盐城风能展
- 2024年中国风电展业大会暨展览会
- 2024第二十三届浙江国际智能楼宇技术与智慧安防产品展览会暨浙江(杭州)国际人工智能,物联网,大数据博览会(杭州智博会)
- 2024年中国郑州食品加工及包装机械展
- IOTE 2024第二十一届中国国际物联网博览会(上海站)
- 2024年日本东京IT展Japan IT Week Spring
- 2024越南国际采矿暨设备技术展览会暨2024越南建筑工程展览会
- 2024年第28届土耳其国际电力及能源展览会 土耳其输配电机电工展览会
- 2024年第28届土耳其国际电力及能源展览会
- 2024第三十二届中国国际电子生产设备暨微电子工业展(NEPCON China)
- 2024第十四届中国西部国际物流产业博览会 第八届中国(西安)智慧交通博览会
- 第四届中国国际数字产品博览会
- 2024年俄罗斯第23届国际石油和天然气工业设备及技术展览会
- 2024年法国巴黎国际工程机械展
- 2024年俄罗斯电力电工及电气工程展览会
- 2024江苏国际工业自动化及智能装配展览会
- 2024石家庄印刷出版博览会
- 2024年第36届俄罗斯国际通信展览会
- 第36届俄罗斯国际通信展(SVIAZ 2024)
- 2024第45届中国(江西)美博会 江西中医养生理疗及大健康博览会
- 2024年德国“汉诺威工业博览会”
- 2024韩国国际机械展