变量声明

如果在一条语句中声明一个变量,如下所示:$var='value';编译器首先会求出语句右半部分的值,恰恰正是语句的这一部分常常会引发错误。如果使用的语法不正确,就会出现解析错误。

解析错误

例如,Parse error:解析错误,unexpected T_WHILE in c:program filesapache groupapachehtdocsscript.php on line 19每次确定了前一错误时,解析错误一个接一个地不断出现,PHP在第一个解析错误之后就停止执行脚本。而且,解析错误具有很少的信息,几乎不报告错误所在的行号。比如表达式中使用了预定义的关键字,例如:while=10;while就是一个预定义的关键字,不能分配给它一个值。预定义关键字包括while、function等,我们不能使用这些预定义关键字来命名变量,否则编译器就会报错。其中,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 filesapache groupapachehtdocsereg2.php on line 9由于函数UselessFunction没有使用大括号(})来结束,PHP编译器会不断查找表示结束的大括号直至到达文件末尾为止。因为编译器未找到一个匹配的大括号,就会报告文件末尾处有错误。如果正确地反映了代码的层次结构,错误信息就会变得非常明显。否则,代码调试起来就会非常的困难。所以,一定要标明代码的层次结构,这对后续的开发人员来说,改进代码也会更容易一些。

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控制台进行测试。

注意echo和print的区别

PHP中echo和print都是输出的作用,但是两者之间还是有细微的差别。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行$r=print"Hello World";变量$r的值将为1。而且代码中echo语句的运行效率要略快于print语句。

注意空字符串('')和NULL的区别

PHP中空字符串和NULL都是以值为0存储的,但是他们的类型并不一样,前者是string,而后者是NULL,可见字符串('')、NULL值相等但类型不等。

分清==(等于)和===(全等于)的区别

两者都属于比较运算符,==(等于)只比较值是否相等,而===(全等于)则不但比较值是否相等,还会比较类型是否相等,它更为严格。

分清include与require的区别

include()与require()的功能也基本相同,但在用法上也有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面代码中,如果变量$a为真,则将包含文件a.php:if($a){include("a.php");}而require()则和include()不同,不管$a取何值,下面的代码都会把文件a.php包含:if($a){require("a.php");}在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行。但是,requre语句会提示一个致命错误。

注意isset和empty的区别

empty是判断一个变量是否为“空”,而isset则是判断一个变量是否已经被设置。

分清self::和this-->的区别

在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(常量)或者static(静态属性),那么就必须使用域操作符::,而如果被引用的变量或者方法没有被声明成const或者static,那么就使用指向操作符->。

标签:PHPPHPIDE

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

2

好文不易,鼓励一下吧!

php编程查错,盘点PHP编程常见失误相关推荐

  1. 金额查错:某财务部门结账时发现总金额不对头。很可能是从明细上漏掉了某1笔或几笔, 如果已知明细账目清单,能通过编程找到漏掉的是哪1笔或几笔吗?

    /** 某财务部门结账时发现总金额不对头.很可能是从明细上漏掉了某1笔或几笔. * 如果已知明细账目清单,能通过编程找到漏掉的是哪1笔或几笔吗? * 如果有多种可能,则输出所有可能的情况. * 我们规 ...

  2. 【报错解决】linux网络编程报错storage size of ‘serv_addr’ isn’t known解决办法

    linux网络编程报错storage size of 'serv_addr' isn't known解决办法 报错如下: server.c:18:21: error: storage size of ...

  3. Qt-c++桌面编程报错:qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in

    问题:Qt-c++桌面编程报错:qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "&q ...

  4. 不会编程也文盲?盘点7种免费学习编程的方法开启浏览器javascr

    我们曾在一篇文章中讨论过不会编程算不算是文盲的问题,虽然有人认为这样有点说过头,但同时也不可否不会编程也文盲?盘点7种免费学习编程的方法开启浏览器javascr认如今编程确实显得越来越重要.比如作为设 ...

  5. 编程查杀ttdianying流氓软件

    注:本文于07/1月于黑客防线发表版权归黑客防线所有,转载请注明出处 编程查杀ttdianying流氓软件 文/图  冷风[后方网络][东南网安] 最近机房重了一种弹出网页式的流氓软件,毛病倒是不大, ...

  6. python编程狮电脑版_w3cschool编程狮PC版-编程狮电脑版下载 v3.3.10--PC6电脑版

    编程狮电脑版是一款零基础编程慕课学习软件.编程狮电脑版提供上千个编程教程,包含微课教学,让你随时随地学习,体验高效.有趣的编程学习方式,喜欢编程,想要学习编程的朋友快来试试吧. 基本简介 编程狮电脑版 ...

  7. 零基础怎样自学编程?新手如何学习编程?编程学习入门指南

    对于编程,很多新手的第一感觉可能就是: 高深,难学. 学好编程,有的时候,可以把一些需要我们重复劳动的工作,自动化批量处理,为我们节省很多时间和精力. 对于一些学得比较深入的朋友来说,更是可以通过它找 ...

  8. 【知乎问题】如何让不懂编程的人感受到编程的魅力?

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  9. 【知乎问题】如何让不懂编程的人感受到编程的魅力

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

最新文章

  1. 四图,读懂 BIO、NIO、AIO、多路复用 IO 的区别
  2. docker依赖的技术探索
  3. 如何真正理解用户标签体系?
  4. linux常用命令--diff
  5. Tensorflow在python3.7版本的运行并且在pycharm安装tensorflow(亲测)
  6. dotNET Core 3.X 使用 Jwt 实现接口认证
  7. VMworld 2010旧金山胜利闭幕
  8. java各层级限流对比,面试官说:来谈谈限流-从概念到实现,一问你就懵逼了?...
  9. c study_13
  10. int、bigint、smallint 和 tinyint范围
  11. design短语的用法总结_中考英语常考的重点句型及短语汇总,考前必备
  12. python创建ppt_python生成ppt的方法
  13. Struts2默认拦截器
  14. 【CSS应用篇】——CSS如何实现渐变背景
  15. 证券行业的数字化转型:金融业务与金融科技的共生发展
  16. 1分钟让你的App 适配 锤子OneStep
  17. 【MongoDB-MongoVUE图像管理工具】
  18. 自定义等高的cell(storyboard)
  19. 关于创建电子邮件链接时如何发送邮件内容
  20. 【CentOS Linux 7】实验3【用户组群管理、磁盘分区及文件系统管理】

热门文章

  1. arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1
  2. CORE协议的MATLAB仿真
  3. 开源工作流程引擎ccflow多人待办处理模式的详解
  4. Linux学习8之Shell编程--基础正则表达式
  5. SpringBoot微服务 b2b2c 多用户商城系统(八)springboot整合mongodb
  6. maven deploy jar包到远程仓库400
  7. Nature:中国正在上演AI人才争夺战,中国公司在与Google竞争
  8. Redis集群解决方案比较
  9. ubuntu14.6 密码重置_已迁移
  10. OpenCV学习笔记——Mat类型数据存储