广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >怎么解析引起PHP代码错误的情况
  • 733
分享到

怎么解析引起PHP代码错误的情况

2023-06-17 12:06:23 733人浏览 泡泡鱼
摘要

本篇文章给大家分享的是有关怎么解析引起PHP代码错误的情况,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。再小心谨慎的人,在编写程序时,还是会犯错的。下面主要介绍PHP中的这些小

本篇文章给大家分享的是有关怎么解析引起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\script.php on line 19

每次确定了前一错误时,解析错误一个接一个地不断出现。因为PHP在***个解析错误之后就停止执行脚本,调试并纠正这一系列的错误往往会让人觉得特别厌烦。

而且,解析错误具有很少的信息,几乎不报告错误所在的行号。具体原因就是当出现错误时,编译器判定好几行的语法看起来应该是有效的,直至遇到无效的语法,最可能的情形就是表达式中使用了预定义的字词,例如;

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

预定义的字词包括 while、function等,如果PHP使用 uses to evaluate your code. 您不能使用这些预定义字词来命名变量,而且如果您非要这样做的话,PHP就会报出更多的错误,这是您无法忍受。

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

$b = "somevalue" if($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\apache group\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 控制台参考来进行测试),或者与数据库的连接失败(这种情况下您应该再次检查用户名和口令等)。

防止错误发生

***步,智能代码器可采取以下几步来消除下列错误出现:

  • 在每一条语句的末尾处,不必考虑添加分号&mdash;&mdash;这应该成为一种习惯。

  • 总是要尽可能标明代码的层次结构,这可以使您能够查看是否忘记在if 调用或函数末端等位置添加大括号。

  • 请使用可突出显示语法的编辑器(如 html-Kit)。有了这类编辑器的辅助,您就能确定是否忘记了添加引号,是否缺少分号等。

以上就是怎么解析引起PHP代码错误的情况,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网PHP编程频道。

--结束END--

本文标题: 怎么解析引起PHP代码错误的情况

本文链接: https://www.lsjlt.com/news/289046.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么解析引起PHP代码错误的情况
    本篇文章给大家分享的是有关怎么解析引起PHP代码错误的情况,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。再小心谨慎的人,在编写程序时,还是会犯错的。下面主要介绍PHP中的这些小...
    99+
    2023-06-17
  • Win10错误代码怎么解析
    要解析Win10错误代码,您可以通过以下步骤进行操作: 确定错误代码:当您遇到错误时,Windows通常会显示错误代码。请记下这...
    99+
    2023-10-22
    Win10
  • java代码解析错误怎么解决
    当Java代码解析错误时,可以尝试以下几种解决方法: 仔细查看错误信息:首先要仔细阅读错误信息,确定错误的类型和位置。错误信息通...
    99+
    2023-10-26
    java
  • JVM优化引起的逻辑错误怎么解决
    这期内容当中小编将会给大家带来有关JVM优化引起的逻辑错误怎么解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。public class Test2 {  ...
    99+
    2023-06-17
  • 怎么使用事务码SMICM分析ABAP代码发起的HTTP请求的错误
    这篇文章主要为大家展示了“怎么使用事务码SMICM分析ABAP代码发起的HTTP请求的错误”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么使用事务码SMICM分析ABAP代码发起的HTTP请求...
    99+
    2023-06-02
  • Mybatis错误引起的程序启动卡死怎么解决
    本文小编为大家详细介绍“Mybatis错误引起的程序启动卡死怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mybatis错误引起的程序启动卡死怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Myb...
    99+
    2023-06-29
  • 怎么解决php错误代码0x80070002问题
    本篇内容主要讲解“怎么解决php错误代码0x80070002问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决php错误代码0x80070002问题”吧!php错误代...
    99+
    2023-06-22
  • Java代码引起的NATIVE野指针问题怎么解决
    Java代码引起的NATIVE野指针问题怎么解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实施hook:我们有了hook,但目前还不知道是哪个so中释放了f...
    99+
    2023-06-17
  • 一文解析PHP元转分的错误示范(附代码实例)
    本篇文章给大家带来了关于php的相关知识,其中主要介绍了通过PHP进行金额(元转分)的互相转化出现的错误,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。php 元转分的错误示范说明一旦进行金额的互相转化,就非常容易发生错误。所以写个文章...
    99+
    2023-05-14
    php
  • win8.1系统中出现的错误代码80073712怎么解决
    win8.1update错误代码80073712解决方法: 许多用户反映在安装Win8.1 Update时会出现这样的一条信息;无法完成升级,撤销更改,然后便出现错误代码80073712,同样也没有提供任何详细信息告知用...
    99+
    2023-06-04
    win8.1 错误代码 8007371 系统
  • 怎么解决PHP输出错误信息乱码的问题
    这篇“怎么解决PHP输出错误信息乱码的问题”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么解决PHP输出错误信息乱码的问题...
    99+
    2023-07-05
  • win10中0xc000000e分区怎么修复引导? 错误代码0xc000000e解决方法
    很多朋友遇到过电脑无法启动并提示0xc000000e的情况,出现这种现象应该怎么解决呢?下面小编给大家带来电脑无法启动并提示0xc000000e的解决方法,下面跟着小编一起来看吧。 解决方法一: 1、...
    99+
    2023-06-08
    0xc000000e win10 分区 错误代码
  • directX错误怎么解决?winXP系统显卡正常运行却无法玩游戏情况的解决方法介绍
    系统显卡正常运行打开游戏时却提示“发生了未知的directX错误”是怎么回事?如何解决?针对此问题,本文就为大家介绍了详细的解决方法,有兴趣的朋友们可以了解下 为什么设备管理器中显示显卡运行正常...
    99+
    2023-06-15
    directX错误 directX 无法玩游戏 玩游戏 系统 情况 winXP 错误
  • Windows PC上的Steam客户端错误代码7和130怎么解决
    这篇文章主要讲解了“Windows PC上的Steam客户端错误代码7和130怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Windows PC上的...
    99+
    2023-04-29
    windows
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作