盘点PHP编程常见失误

为什么80%的码农都做不了架构师?>>>   hot3.png

变量声明

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

更多新体验,欢迎试用JetBrains旗下的各种Web开发工具(包括PHPIDE)。另外还有5折限时抢购和免费领iPhone 6、iPad air等好礼!


转载于:https://my.oschina.net/evget/blog/370046

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Scala具体解释---------Scala是什么?可伸展的语言!

Scala是什么 Scala语言的名称来自于“可伸展的语言”。之所以这样命名&#xff0c;是由于他被设计成随着使用者的需求而成长。你能够把Scala应用在非常大范围的编程任务上。从写个小脚本到建立个大系统。51CTO编辑推荐&#xff1a;Scala编程语言专题 Scala是非常easy进入的语言…

地理学:从未磨灭的价值

地理学&#xff1a;从未磨灭的价值 文|梁鹏 庄子说&#xff1a;“天地有大美而不言&#xff0c;四时有明法而不议&#xff0c;万物有成理而不说”&#xff0c;天地不言&#xff0c;四时不议&#xff0c;万物不说&#xff0c;于是地理学家就是替天地说话的那帮人。推开自然之门&…

Android之导入项目提示Android requires compiler compliance level 5.0 or 6.0. Found ‘1.8‘ instead解决办法

1、问题 导入项目eclipse提示如下&#xff1a; Android requires compiler compliance level 5.0 or 6.0. Found 1.8 instead 2、解决办法 项目右键->Android tools->Fix Project

Educational Codeforces Round 1

被C坑的不行不行的。。。其他题目都还可以。 A - Tricky Sum 求1&#xff0c;2&#xff0c;3,...,n的加和&#xff0c;其中2^x&#xff08;x>0&#xff09;为负。 因为2^x的个数很少&#xff0c;所以以每个2^x为分界点进行判断. 初始化x0; 如果n>2^x,求出2^(x-1)到2^(x)之…

自定义View的三个构造函数

自定义View有三个构造方法&#xff0c;它们的作用是不同的。 public MyView(Context context) {super(context); }public MyView(Context context, AttributeSet attrs) {super(context, attrs);}public MyView(Context context, AttributeSet attrs, int defStyleAttr) {su…

mysql查询今天_昨天_7天_近30天_本月_上一月 数据_mysql查询今天、昨天、7天、近30天、本月、上一月 数据...

获取当前时间CURTIME();查询今天的数据select * from table where to_days(time) to_days(now())查询昨天数据select * from error where to_days(now())-to_days(alarmtime)1查询最近一个星期数据select * from error where to_days(now())-to_days(alarmtime)<7SELECT * …

甲骨文严查Java授权,企业连夜删除JDK

文 | Travis出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013)根据外媒 The Register 报道和各大企业的反馈&#xff0c;甲骨文公司近日已经开始将 Java 纳入其软件许可审查中&#xff0c;目的是找出那些处于不合规边缘或已经违规的客户&#xff0c;甲骨文此举是为了推…

前端日志分析

前端日志分析介绍 前端日志分析是通过搜集访客访问网站的行为数据&#xff0c;然后在这些用户日志数据的基础上通过定量和定性分析&#xff0c;来改善用户的浏览体验及网站性能&#xff0c;最终提升商业回报的过程&#xff0c;通常&#xff0c;前端日志分析遵循以下步骤…

历史之外,地理之中

历史之外&#xff0c;地理之中 ◎梁鹏 沉迷于历史&#xff0c;却最终选择了地理&#xff0c;于是苦苦寻求历史与地理之间的共通衔接之处。于学科而言&#xff0c;是历史与地理&#xff0c;于我而言&#xff0c;是梦想与现实。我知道已经存在的历史地理学不是我的归宿&#xff…

linux之readelf命令

1、readelf命令解释 readelf命令用来显示一个或者多个elf格式的目标文件的信息 2、ELF文件类型 可重定位文件:用户和其他目标文件一起创建可执行文件或者共享目标文件,例如lib*.a文件。 可执行文件:用于生成进程映像,载入内存执行,例如编译好的可执行文件a.out。 共享目标文件…

zuul转发的一些常见异常

为什么80%的码农都做不了架构师&#xff1f;>>> ##序 使用zuul作为api网关的话&#xff0c;经常会碰见一些异常&#xff0c;这里小结一下。 ##ZuulException 这个是最外层的异常 public class ZuulException extends Exception {public int nStatusCode;public Str…

Java中如何利用gson解析数据

最近在学习Java&#xff0c;需要用到json&#xff0c;本人对java不是特别精通&#xff0c;于是开始搜索一些java平台的json类库。 发现了google的gson&#xff0c;带着一些好奇心&#xff0c;我开始使用了gson。 经过比较&#xff0c;gson和其他现有java json类库最大的不同时g…

python基础入门大作业怎么做_【百度飞桨】零基础Python课程大作业

转眼间百度飞桨的零基础python课程马上就要结束了&#xff0c;所谓年前学python&#xff0c;年后来上号&#xff0c;通过本次课程可以对python有一个基础的认知和掌握&#xff0c;以下是大作业的个人代码&#xff0c;仅供参考。【作业一】#创建Student类class Student:def __in…

Xamarin效果第八篇之视频监控

还记得全年帮助一个朋友通过技术手段写了一个PC端的监控软件,这不再次想起此事,准备基于Xamarin再来实现一个移动端的监控;毕竟直接手机上打开还是比较方便的;最终实现的效果:1、启动页动画,原来直接贴图片;这次尝试使用Lottie来玩玩,直接贴参考连接https://www.codesitory.com…

Python 日期格式相关

今天看网上一个说中文日期的问题. 自己试了下.#-*- coding: gb2312 -*- import datetime, time#now time.strftime(%Y年%m月%d日 %H时%M分%S秒, time.localtime()).decode(utf-8) now time.strftime(%Y年%m月%d日 %H时%M分%S秒, time.localtime()) print nownow time.strpti…

Android之解决java.lang.UnsatisfiedLinkError: dlopen failed: ××××.so: has text relocations

1、问题 项目导入别人的so,有个项目没问题,但是这个有问题,运行提示这个错误 java.lang.UnsatisfiedLinkError: dlopen failed: .so: has text relocations 2、临时规避的解决办法 把现在的项目targetSdkVersion版本降低: such as,又24变为22,这样可以解决问题(没有源代…

前端实现连连看小游戏(1)

博主玩了这么久的连连看&#xff0c;居然是第一次发现&#xff0c;连连看最多只能有2个转弯。orz… 在网上搜索连连看的连线算法判断&#xff0c;并没有找到很全面的&#xff0c;经过自己摸索之后&#xff0c;做了一些小动画&#xff0c;希望大家可以看一遍都懂啦&#xff5e;&…

在 Visual Studio 2010 中创建 ASP.Net Web Service

第一步&#xff1a;创建一个“ASP.Net Empty Web Application”项目 第二步&#xff1a;在项目中添加“Web Service”新项目 第一步之后&#xff0c;Visual Studio 2010会创建一个仅含一个站点配制文件&#xff08;Web.config&#xff09;的空站点&#xff0c;其余的什么也没有…

C#中缓存的使用

简介缓存是指可以进行高速数据交换的存储器&#xff0c;它先于内存与CPU交换数据&#xff0c;因此速率很快。由于CPU从内存中读取数据的速度比从磁盘读取快几个数量级&#xff0c;并且存在内存中&#xff0c;减小了数据库访问的压力&#xff0c; 所以缓存几乎每个项目都会用到。…

artDialog ( v 6.0.2 ) content 参数引入页面 html 内容

/*! artDialog v6.0.2 | https://github.com/aui/artDialog */ 将页面某一隐藏的 div 的 html 内容传到 artdialog 的弹窗中&#xff0c;并且该 div 不会被删除&#xff0c;代码如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8…