另类的写法有惊喜
我们在阅读某些源代码的时候会发现有一种另类的写法,比如
其实这是一种很聪明的写法,它可以很大程度上杜绝手误造成的严重bug。 假如我们在正常方法中把 ==
误写成 =
,那么if($result = false)
就会恒定返回true,导致在实际运行中产生未知的Bug,如果使用异常的写法出现手误变成时if(false = $false)
,编辑器会抛出一个error,我们就可以及时发现并修复问题。
假如有一个文件在 ?>
后有一个空白行,那么你在使用 session_start()
等方法时,会返回一个警告headers already sent by xxx
,这是因为 session_start()
要求使用前不能有任何输出。 同理 <?php
前的空行也会存在同样的问题。
解决的方案比较简单,只要在.
连接左右加上空格就可以防止语法错误。
这个例子中输出true是不是让你大吃一惊,其实php中将字符串和数字做比较时,会把字符串强制转换为int性,转换规则为 如果字符串是数字开头,那么取开头数字作为转换结果,如果开头不是数字那么就为0
你以为会输出从a到z?那你就错了,亮瞎你的输出结果如下:
精度丢失的问题在其他语言中有会有,但是在PHP这种弱类型的语言中更加需要注意。