9条PHP编程小知识及易犯的小错误


Posted in PHP onJanuary 22, 2015

变量声明

如果在一条语句中声明一个变量,如下所示:$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,那么就使用指向操作符->。

PHP 相关文章推荐
PHP 过滤页面中的BOM(实现代码)
Jun 29 PHP
PHP获取当前url的具体方法全面解析
Nov 26 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
php表单提交实例讲解
Nov 12 PHP
php简单获取复选框值的方法
May 11 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
Nov 06 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 PHP
PHP多进程简单实例小结
Nov 09 PHP
PHP将HTML转换成文本的实现代码
Jan 21 #PHP
php使用Cookie控制访问授权的方法
Jan 21 #PHP
PHP+MySQL修改记录的方法
Jan 21 #PHP
PHP+MySQL删除操作实例
Jan 21 #PHP
PHP+MySQL插入操作实例
Jan 21 #PHP
php+mysql数据库查询实例
Jan 21 #PHP
php使用Cookie实现和用户会话的方法
Jan 21 #PHP
You might like
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
9个比较实用的php代码片段
2016/03/15 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python中返回字典键的值的values()方法使用
2015/05/22 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
matplotlib实现区域颜色填充
2019/03/18 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
翻译学院毕业生自荐书
2014/02/02 职场文书
银行批评与自我批评
2014/02/10 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
文科生自我鉴定
2014/02/15 职场文书
迎国庆演讲稿
2014/09/05 职场文书
学生喝酒检讨书500字
2014/11/02 职场文书