background image

而且,解析错误具有很少的信息,几乎不报告错误所在的行号。具体原因就是当出现错

误时,编译器判定好几行的语法看起来应该是有效的,直至遇到无效的语法,最可能的情形
就是表达式中使用了预定义的字词,例如;

while = 10; // Bad ? while 就是一个预定义字词,不能分配给一个值

预定义的字词包括 while、function等,如果PHP使用 uses to evaluate your code. 您

不能使用这些预定义字词来命名变量,而且如果您非要这样做的话,PHP就会报出更多的错
误,这是您无法忍受。

关于这个问题,下面的示例可能会对您有所帮助。请咨询阅读一下下面所示的PHP代码:

﹤?php

$b = somevalue

if($b == somevalue){

print Hello world!;

}

?﹥

错误位于$b =一行(在语句的末端缺少分号)

,所以错误应该是解析错误:第3行缺少分

号对吧?而不应该依据解析器判定的:

Parse error: parse error, unexpected T_IF in c:\\program files\\apache

group\\apache\\htdocs\\ereg2.php on line 4

在第4行,if() 语句的语法是正确的。那么,编译器是被什么给搞糊涂了呢?线索就

是unexpected T_IF 部分。出现 unexpected T_???错误时,它所表示的含义为:编译器发
现在预定义字不应该出现的位置出现。T_IF 代表 if(), T_WHILE 代表 while()

, T_FOR

代表 for()等。

值得庆幸的是,一些错误的原因也很简单:

语句没有使用分号(;)结束,比如上面的示例。字符串中缺少引号。

其他一些常见的错误

我见过的最常见的错误就是,当没有使用大括号( } )结束一个函数或者一个循环时