php写代码的时候注意哪些,PHP写代码注意别踩坑

由于PHP是弱类型语言,程序运行时不会检查变量是否合法,很多时候调用函数只会返回false,null等值,因而有时很难发现有bug的存在。

因此在开发过程中需要特别注意,规避一下不必要的bug出现。

以下是我刚开始工作时在工作中遇到过的问题,特记录下来,让更多的新进入PHP世界的朋友少踩一些坑。

因为在写这篇文章时,时间过去了好久,遇到的很多情况都忘记了,因此这个文章会持续更新,想到了就加上。

array_merge — 合并一个或多个数组

合并一个二维数组:

array_merge(...$arr);

如果二维数组$arr 不是数字索引,那返回false

正确的做法是,把字符串索引变成数字索引再做合并操作:

array_merge(...array_values($arr));

合并多个一维数组:

array_merge($arr1, $arr2);

如果$arr1或$arr2有一个不是数组,则返回false。当然我们可能不会到故意传非数组变量,那如果是$arr1和$arr2是其他函数return回来的呢,由于php是弱类型语言,因此无法保证别的从函数return回来的变量会一直是数组。

因此我们需要做类型强制转换:

array_merge((array)$arr1, (array)$arr2);

array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

array_combine($arrKeys, $arrValues)

如果数组$arrKeys和$arrValues长度不一致,则会将会抛出一个警告错误(E_WARNING)并返回一个false。

因此我们需要保证二者长度一致:

$minLen = min(count($arrKeys), count($arrValues));

array_combine(array_slice($arrKeys, 0, $minLen), array_slice($arrValues, 0, $minLen));

字符串和0比较错误

var_dump(‘string‘ == 0);

结果:bool(true)

PHP会把‘string‘转成整形与0比较大小,‘string‘转成整形自然就是0了,因此会得出true

因此,如果是字符串比较,应该给0变成字符串:

var_dump(‘string‘ == ‘0‘);

未完待续...

原文:https://www.cnblogs.com/phploger/p/14044873.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值