武汉PHP培训
达内武汉民大中心

15827352908

热门课程

武汉PHP培训丨PHP 易错知识点整理

  • 时间:2018-01-31 11:19
  • 发布:武汉PHP培训
  • 来源:互联网

    注意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.而require()则和include()不同,不管$a取何值,
    在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行.但是,require语句会提示一个致命错误.
    注意isset和 empty的区别
    empty是判断一个变量是否为"空",而isset则是判断一个变量是否已经被设置.
    分清self :: 和 this--> 的区别
    在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(常量)或者static(静态属性),那么就必须使用域操作符::,而如果被引用的变量或者方法没有被声明成const或者static,那么就使用指向操作符->.

    foreach循环后留下悬挂指针

武汉PHP培训

    这里有个问题很多人会迷糊.循环结束后,$value并未销毁,$value其实是数组中最后一个元素的引用,这样在后续对$value的使用中,如果不知道这一点,会引发一些莫名奇妙的错误
    上面代码的运行结果如下:
    1,2,3
    1,2,3
    1,2,2
    你猜对了吗?为什么是这个结果呢?
    我们来分析下.第一个循环过后,$value是数组中最后一个元素的引用.第二个循环开始:
    第一步:复制$arr[0]到$value(注意此时$value是$arr[2]的引用),这时数组变成[1,2,1]
    第二步:复制$arr[1]到$value,这时数组变成[1,2,2]
    第三步:复制$arr[2]到$value,这时数组变成[1,2,2]
    综上,最终结果就是1,2,2
    忽略Unicode/UTF-8问题
    php编程中,在处理非ascii字符时,会遇到一些问题,要很小心的去对待,要不然就会错误遍地.举个简单的例子,strlen($name),如果$name包含非ascii字符,那结果就有些出乎意料.在此给出一些建议,尽量避免此类问题:
    最好使用mb_*函数来处理字符串,避免使用老的字符串处理函数.这里要确保PHP的"multibyte"扩展已开启.
    数据库和表最好使用unicode编码.
    知道json_code()函数会转换非ascii字符,但serialize()函数不会.
    php代码源文件最好使用不含bom的utf-8格式.

    本篇文章是由武汉PHP培训为您呈现,希望给您带来更多更好的文章,喜欢的朋友们可以添加微信公众号.

更多武汉PHP培训相关咨询,请扫描下方二维码

武汉PHP培训

上一篇:武汉PHP培训丨高级PHP工程师所应该具备的
下一篇:武汉PHP培训丨PHP高级程序员一定要会的知识点

PHP 优化写法之字符串

CodeIgniter的优缺点

PHP高性能框架之一Yii

选择城市和中心
贵州省

广西省

海南省

有位老师想和您聊一聊