3

前言

本周是学习php的最后一周了,我也基本把教程看完了,整个下来感觉就是刚开始很慢,到后来就会好很多,但是,虽然看到了后面,前面可能还是会有点毛病,就比如最近看教程的时候突然发现了一个问题。

之前遗留的残骸

在某天学习的时候我突然想起来有一次我的一个写条件的代码没有按照教程原本顺的来,为了图省事就直接把另一段代码加到原本代码的末尾了(条件和原本的顺序相反),运行结果也不一样来着,当时也没太大意,因为毕竟没有报错,后来就想着改成和教程输出一样的结果,就想着直接把false改成true,因为比较省事,但是,出事了!QQ图片20200718135700.jpgQQ图片20200718135710.pngQQ图片20200718135723.jpgQQ图片20200718135731.pngQQ图片20200718135746.jpgQQ图片20200718135751.pngQQ图片20200718135800.jpgQQ图片20200718135805.png
在数据添加成功的前提下,不管if中是true还是false只要增加成功在else下面那么返回的结果就是我们所期待的,但是增加成功如果和增加失败的语句更换一下顺序,那么就会一直显示新增失败,但数据是增加成功的,这就奇了怪了,到底为啥呢,说实话我盯这段代码足足二十来分钟,没有报错,说明语法正确,拼写也争取,但就是不是预期,由于以前我一直认为===与==等号是一样的效果,但是我还是删了一个等号想再确认一下我认为的是不是正确的,但是,结果符合预期了这让我很惊喜,后来查了一下三个等号与两个等号的区别,先举个列子:
比如你一个函数会返回这几种情况:
1、大于0的数
2、小于0的数
3、等于0的数(也就是0啦)
4、False(失败时)
这时候如果你想捕获失败的情况,你就必须用===,而不能用== ,并且三个等号代表比较对象的类型也要一致。两个等号表示只要值相等就满足条件。
因为==除了会匹配第4种情况外,还会匹配第3种情况,因为0也是假!
而因为此时result是一个值,===不匹配第三种情况,所以就出现了所述问题。

另一个问题就是在条件执行语句一样但是true和false不一样时,刷新insert界面的结果不同,但是执行语句顺序调换true和false一样时,刷新insert界面的结果也不同,可以分两组看,当刷新insert界面时,页面执行了一遍insert的代码,此时保存失败result为false,也就没有id,所以才会出现所示结果。
因为刚开始一直以为save()执行失败返回的是0所以就一直搞不懂为什么,在网上查了一下才知道,如果前台数据没改变返回0,改变则返回改变的那个行数,失败的话返回的便是false了。

总结

通过这次的错误,我又一次地长了记性,当下问题当下解决,因为如果不当下解决,会一直糊涂,问题虽是麻烦的,但是当下解决的感觉却是很舒服啊,拖一时一时爽,但是一直拖不会一直爽。
下周就开始做项目了,相对自己也相对团队说,加油,我们很棒!nice!
本文保留所有权利,版权归[河北工业大学梦云智软件开发团队]
本文作者:陈丽婷


陈大婷子
41 声望9 粉丝