遍历数组元素,使用引用
foreach ($PostList as &$postInfo) {
}
unset(&$postInfo); // 最好加上这条语句,不然下面的语句中用到这个变量,用的是数组最后一个元素
运算符结合性和优先级
尽可能不写运算符堆砌的语句,可读性较差。
浮点数比较
和其他语言浮点数比较相同
不同类型数值比较
var_dump("true == 70", true == 70);
bool(true)
整形和布尔比较,PHP会先把整形转换成布尔
php 版本 5.2.4 问题:文件字符串转码时按字节截断不当 比如
$str = “公司”; //默认以UTF-8编码
$str = Simple_Util_String::msubstr($str, 4); // 按字节截取前4个字节,原字符串有6个字节
$str .= “adfadsfasdfadsfasdf”; //拼接后面的字符串 (执行下一步后,这些字符就消失了)
$str = iconv("UTF-8", "GBK//TRANSLIT",$str); // 转码 , 遇到不认识的字符串进行转写
执行此步时,“公司”的“司”字编码不完整,iconv不认识,但iconv没有转写,而是做了截断。导致$str后面的字符串也没有转换成功,“adfadsfasdfadsfasdf”丢失了。在一些商业产品,尤其是有关统计的系统里,这是很危险的。 解决方法是: 改变iconv第二个参数。
$str = iconv("UTF-8","GBK//IGNORE", $str);
总结:iconv的TRANSLIT并不靠谱,遇到不认识也不能转写的字符串,也可能截断。保险的方法是用IGNORE。
foreach 还有一个指针问题,我这里踩过,foreach($arr as $v)这里的$arr循环内修改其值,如果在同进程下被使用指针时,php5.x内的会出现问题,这个官网上说过,“由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。”,php7却完美支持了,所以我只好使用了foreach($arr as & $v)已经reset($arr)来兼容。
赞啊!