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

 更新时间:2015年01月22日 08:45:39   投稿:junjie  
这篇文章主要介绍了9条PHP编程必备知识,本文讲解了变量声明、解析错误、常见的错误、MySQL错误、注意echo和print的区别、注意空字符串('')和NULL的区别、分清==(等于)和===(全等于)的区别等内容,需要的朋友可以参考下

变量声明

如果在一条语句中声明一个变量,如下所示:$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 GD库添加freetype拓展的方法

    PHP GD库添加freetype拓展的方法

    下面小编就为大家分享一篇PHP GD库添加freetype拓展的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法

    Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方

    这篇文章主要介绍了Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法,简明扼要的分析了Windows环境下wamp中php单元测试工具PHPUnit的安装步骤、操作注意事项以及生成日志文件配置方法,需要的朋友可以参考下
    2018-05-05
  • 关于初学PHP时的知识积累总结

    关于初学PHP时的知识积累总结

    本篇文章笔者初学PHP时的一些知识积累经验,需要的朋友参考下
    2013-06-06
  • php获取本周星期一具体日期的方法

    php获取本周星期一具体日期的方法

    这篇文章主要介绍了php获取本周星期一具体日期的方法,涉及php针对日期的操作技巧,非常具有实用价值,感兴趣的朋友可将该代码片段整合进自己的日期类中以方便日后调用,需要的朋友可以参考下
    2015-04-04
  • php使用MySQL保存session会话的方法

    php使用MySQL保存session会话的方法

    这篇文章主要介绍了php使用MySQL保存session会话的方法,涉及php操作session及数据库的相关技巧,需要的朋友可以参考下
    2015-06-06
  • PHP数据库操作四:mongodb用法分析

    PHP数据库操作四:mongodb用法分析

    这篇文章主要介绍了PHP数据库操作mongodb用法,结合实例形式较为详细的分析了MongoDB的功能、安装、基本命令、使用方法及相关注意事项,需要的朋友可以参考下
    2017-08-08
  • 数据结构之利用PHP实现二分搜索树

    数据结构之利用PHP实现二分搜索树

    这篇文章主要给大家介绍了关于数据结构之利用PHP实现二分搜索树的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 让PHP更快的提供文件下载的代码

    让PHP更快的提供文件下载的代码

    一般来说, 我们可以通过直接让URL指向一个位于Document Root下面的文件, 来引导用户下载文件
    2012-06-06
  • 解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory

    解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such fi

    这篇文章主要给大家介绍了关于解决在PHP 7编译安装遇到的错误错误:cannot stat ‘phar.phar’: No such file or directory问题的相关资料,文中给出详细的解决方法,需要的朋友可以参考借鉴。
    2017-02-02
  • php中模拟POST传递数据的两种方法分享

    php中模拟POST传递数据的两种方法分享

    php中模拟POST传递数据的两种方法分享,有时候需要模拟提交数据方便采集,需要的朋友可以参考下。
    2011-09-09

最新评论