而且,解析错误具有很少的信息,几乎不报告错误所在的行号。具体原因就是当出现错
误时,编译器判定好几行的语法看起来应该是有效的,直至遇到无效的语法,最可能的情形
就是表达式中使用了预定义的字词,例如;
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()等。
值得庆幸的是,一些错误的原因也很简单:
语句没有使用分号(;)结束,比如上面的示例。字符串中缺少引号。
其他一些常见的错误
我见过的最常见的错误就是,当没有使用大括号( } )结束一个函数或者一个循环时