php编程查错,盘点PHP编程常见失误
变量声明
如果在一条语句中声明一个变量,如下所示:$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笔或几笔吗? * 如果有多种可能,则输出所有可能的情况. * 我们规 ...
- 【报错解决】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 ...
- 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 ...
- 不会编程也文盲?盘点7种免费学习编程的方法开启浏览器javascr
我们曾在一篇文章中讨论过不会编程算不算是文盲的问题,虽然有人认为这样有点说过头,但同时也不可否不会编程也文盲?盘点7种免费学习编程的方法开启浏览器javascr认如今编程确实显得越来越重要.比如作为设 ...
- 编程查杀ttdianying流氓软件
注:本文于07/1月于黑客防线发表版权归黑客防线所有,转载请注明出处 编程查杀ttdianying流氓软件 文/图 冷风[后方网络][东南网安] 最近机房重了一种弹出网页式的流氓软件,毛病倒是不大, ...
- python编程狮电脑版_w3cschool编程狮PC版-编程狮电脑版下载 v3.3.10--PC6电脑版
编程狮电脑版是一款零基础编程慕课学习软件.编程狮电脑版提供上千个编程教程,包含微课教学,让你随时随地学习,体验高效.有趣的编程学习方式,喜欢编程,想要学习编程的朋友快来试试吧. 基本简介 编程狮电脑版 ...
- 零基础怎样自学编程?新手如何学习编程?编程学习入门指南
对于编程,很多新手的第一感觉可能就是: 高深,难学. 学好编程,有的时候,可以把一些需要我们重复劳动的工作,自动化批量处理,为我们节省很多时间和精力. 对于一些学得比较深入的朋友来说,更是可以通过它找 ...
- 【知乎问题】如何让不懂编程的人感受到编程的魅力?
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 【知乎问题】如何让不懂编程的人感受到编程的魅力
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
最新文章
- 四图,读懂 BIO、NIO、AIO、多路复用 IO 的区别
- docker依赖的技术探索
- 如何真正理解用户标签体系?
- linux常用命令--diff
- Tensorflow在python3.7版本的运行并且在pycharm安装tensorflow(亲测)
- dotNET Core 3.X 使用 Jwt 实现接口认证
- VMworld 2010旧金山胜利闭幕
- java各层级限流对比,面试官说:来谈谈限流-从概念到实现,一问你就懵逼了?...
- c study_13
- int、bigint、smallint 和 tinyint范围
- design短语的用法总结_中考英语常考的重点句型及短语汇总,考前必备
- python创建ppt_python生成ppt的方法
- Struts2默认拦截器
- 【CSS应用篇】——CSS如何实现渐变背景
- 证券行业的数字化转型:金融业务与金融科技的共生发展
- 1分钟让你的App 适配 锤子OneStep
- 【MongoDB-MongoVUE图像管理工具】
- 自定义等高的cell(storyboard)
- 关于创建电子邮件链接时如何发送邮件内容
- 【CentOS Linux 7】实验3【用户组群管理、磁盘分区及文件系统管理】
热门文章
- arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1
- CORE协议的MATLAB仿真
- 开源工作流程引擎ccflow多人待办处理模式的详解
- Linux学习8之Shell编程--基础正则表达式
- SpringBoot微服务 b2b2c 多用户商城系统(八)springboot整合mongodb
- maven deploy jar包到远程仓库400
- Nature:中国正在上演AI人才争夺战,中国公司在与Google竞争
- Redis集群解决方案比较
- ubuntu14.6 密码重置_已迁移
- OpenCV学习笔记——Mat类型数据存储