博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一些容易出错的细节
阅读量:4561 次
发布时间:2019-06-08

本文共 989 字,大约阅读时间需要 3 分钟。

php是弱类型语言,和一些其他编程语言在处理一些数据类型的时候有所不同。

我最近做的一个限号的需求,我就犯了一个错误。

如下:

运行结果如图:

我当时犯的一个错误就是把-1认为转成bool类型会是false,其实php自有一套判断方式。

Note:If the value parameter is omitted, or is 0, -0, null, , false, undefined, or NaN, the object is set to false. Otherwise it is set to true (even with the string false)!

所以对于$b的判断只能用数值判断

if ($b <0) { echo "-1 equal false";}

在强类型语言,如java中,也只能用这样数值的判断方式,它也不允许直接从int类型强制转换类型到boolean。与php相比,直接规避了这种麻烦。

那么有人又不服了,为什么不说说JavaScript?

<script type="text/javascript">

        var a='0';

        if(a){

                alert(1);

        }else{

                alert(0);

        }

</script>  值为true

js也是若类型,会把a当做字符串,在if判断中就当做了true.

写到这里让我想起去某欧面试的一道比较非主流的面试题:

-8%(-3) = ?

答案是-2。这是取余,商2,-8 - (-6) = -2.

php就是这么任性。

还有个容易忘记的事儿就是在循环中改变数值的保存。其实常见的有两种方式,以前在聚美的时候见过有强烈c语言风格的写法。往往都是新设一个数组,然后去装要改变的数据。还有一种 就是用引用。如果关联性比较大且后面操作组合比较麻烦,我会选第二种。引用也会节省内存空间消耗。试想一下一个大的报表的原始数据数组,被你用新的数组去装,而且这个你要的数据只是临时变量并不复用,这成本也忒大了。

弱类型让很多判断变得需要更加严谨,因编译器不帮你事先判断,你只能用逻辑去堵可能出现的bug。没有一样东西是完美的,看似完美的背后都有致命伤。

 

God is in details.

转载于:https://www.cnblogs.com/freephp/p/4903860.html

你可能感兴趣的文章
CodeForces 731A Night at the Museum
查看>>
MySQL 删除数据库
查看>>
JavaScript 字符串(String) 对象
查看>>
How to use VisualSVN Server and TortoiseSVN to host your codes and control your codes' version
查看>>
微信小程序picker组件 - 省市二级联动
查看>>
Dynamics CRM 给视图配置安全角色
查看>>
Eclipse修改已存在的SVN地址
查看>>
(转)使用 python Matplotlib 库绘图
查看>>
进程/线程切换原则
查看>>
正则表达式语法
查看>>
20165301 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Vue的简单入门
查看>>
urllib 中的异常处理
查看>>
通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?
查看>>
WIFI密码破解全攻略
查看>>
gulp
查看>>
pgsql查询优化之模糊查询
查看>>
不变模式
查看>>
20181227 新的目标
查看>>
androidtab
查看>>