php中一些知识点(老师不会教哦)
2016-05-16 21:35
417 查看
我们在阅读某些源代码的时候会发现有一种另类的写法,比如
//异常写法
if(false == $result)
//正常写法
if($result == false)
其实这是一种很聪明的写法,它可以很大程度上杜绝手误造成的严重bug。
假如我们在正常方法中把 == 误写成 = ,那么 if($result = false) 就会返回未知结果,导致在实际运行中产生未知的Bug,如果使用异常的写法出现手误变成时 if(false = $false) ,编辑器会抛出一个error,我们就可以及时发现并修复问题。
'<?php'开始前不要有空行,php脚本结尾的 '?>' 尽量省略
假如有一个文件在 ?> 后有一个空白行,那么你在使用 session_start() 等方法时,会返回一个警告 headers already sent by xxx ,这是因为 session_start() 要求使用前不能有任何输出。
同理 <?php 前的空行也会存在同样的问题。
字符串和数字在一起时,要留神
var_dump('a'.0); //返回error,语法错误
解决的方案比较简单,只要在.连接左右加上空格就可以防止语法错误。
var_dump ('abc' == 0); //输出true
var_dump ('1abc' == 0); //输出false
这个例子中输出true是不是让你大吃一惊,其实php中将字符串和数字做比较时,会把字符串强制转换为int性,转换规则为 如果字符串是数字开头,那么取开头数字作为转换结果,如果开头不是数字那么就为0
字符串的运算,你惹不起
for ($i = 'a'; $i <= 'z'; ++$i) {
echo "$i ";
}
你以为会输出从a到z?那你就错了,亮瞎你的输出结果如下:
a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc .......(太多不在复制了)
时刻小心精度丢失的情况
$f = 0.58;
echo intval($f * 100); // 输出57
sprintf("%.2f",$f * 100); //输出58.00
精度丢失的问题在其他语言中有会有,但是在PHP这种弱类型的语言中更加需要注意。
其实上述说到的问题在PHP手册中都已经提及到了,手册翻百遍打码如有神,一定的细心加一定的经验,你就能够在开发的路上一路填坑一路前行。
//异常写法
if(false == $result)
//正常写法
if($result == false)
其实这是一种很聪明的写法,它可以很大程度上杜绝手误造成的严重bug。
假如我们在正常方法中把 == 误写成 = ,那么 if($result = false) 就会返回未知结果,导致在实际运行中产生未知的Bug,如果使用异常的写法出现手误变成时 if(false = $false) ,编辑器会抛出一个error,我们就可以及时发现并修复问题。
'<?php'开始前不要有空行,php脚本结尾的 '?>' 尽量省略
假如有一个文件在 ?> 后有一个空白行,那么你在使用 session_start() 等方法时,会返回一个警告 headers already sent by xxx ,这是因为 session_start() 要求使用前不能有任何输出。
同理 <?php 前的空行也会存在同样的问题。
字符串和数字在一起时,要留神
var_dump('a'.0); //返回error,语法错误
解决的方案比较简单,只要在.连接左右加上空格就可以防止语法错误。
var_dump ('abc' == 0); //输出true
var_dump ('1abc' == 0); //输出false
这个例子中输出true是不是让你大吃一惊,其实php中将字符串和数字做比较时,会把字符串强制转换为int性,转换规则为 如果字符串是数字开头,那么取开头数字作为转换结果,如果开头不是数字那么就为0
字符串的运算,你惹不起
for ($i = 'a'; $i <= 'z'; ++$i) {
echo "$i ";
}
你以为会输出从a到z?那你就错了,亮瞎你的输出结果如下:
a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc .......(太多不在复制了)
时刻小心精度丢失的情况
$f = 0.58;
echo intval($f * 100); // 输出57
sprintf("%.2f",$f * 100); //输出58.00
精度丢失的问题在其他语言中有会有,但是在PHP这种弱类型的语言中更加需要注意。
其实上述说到的问题在PHP手册中都已经提及到了,手册翻百遍打码如有神,一定的细心加一定的经验,你就能够在开发的路上一路填坑一路前行。
相关文章推荐
- ubuntu下安装ftp服务器
- php截取视频指定帧为图片
- PHP实习记录
- [Laravel 5.2]二、注册、登陆及用户认证
- 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
- php使用ffmpeg向视频中添加文字字幕
- php使用ffmpeg向视频中添加文字字幕
- php使用ffmpeg向视频中添加文字字幕
- Sublime Text (3) for PHP Developers
- PHP下foreach的作用域,对数组的操作影响
- vsftp pasv模式连接失败处理
- php 验证身份证有效性,根据国家标准GB 11643-1999 15位和18位通用
- 【转】Php+ajax+jsonp解决ajax跨域问题
- 使用XHProf查找PHP性能瓶颈
- php单引号和双引号的区别,简单例子对比
- PHP中常用的数组操作方法笔记整理
- phpStudy多站点配置
- Mac OS下PHP环境搭建及PHP操作MySQL常用方法小结
- php 实现背景图上添加 圆形logo
- phpExcel初步使用