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 相关文章推荐
Windows下PHP的任意文件执行漏洞
Oct 09 PHP
一个简单的MySQL数据浏览器
Oct 09 PHP
php桌面中心(二) 数据库写入
Mar 11 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
PHP在不同页面间传递Json数据示例代码
Jun 08 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
PHP引用的调用方法分析
Apr 25 PHP
PHP strip_tags保留多个HTML标签的方法
May 22 PHP
PHP面向对象之工作单元(实例讲解)
Jun 26 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
Dec 07 PHP
thinkphp5修改view到根目录实例方法
Jul 02 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
PHP获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
javascript 函数速查表
2010/02/07 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
python文件和目录操作函数小结
2014/07/11 Python
Python切片工具pillow用法示例
2018/03/30 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
python实现代码统计程序
2019/09/19 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Python猜数字算法题详解
2020/03/01 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
英语专业应届生求职信范文
2013/11/15 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
企业贷款委托书格式
2014/09/12 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
公司的力量观后感
2015/06/05 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL