美文网首页
PHP随笔 - 数组的key问题

PHP随笔 - 数组的key问题

作者: 圣火之光 | 来源:发表于2020-01-15 14:42 被阅读0次

今天遇到一个case,随手记一下:

代码中有一个逻辑是使用array_search查找数组中是否存在指定的key,存在的话就把它删除掉:


$index = array_search('a', $array);

unset($array[$index]);

执行过程中发现,有时候会把不应该删除的元素删掉,排查后发现,当array_search没有找到待查元素时会返回false,布尔值的key会被转换为整形,因此就把$array[0]删除掉了。

PHP手册中相关内容如下:

(数组的)key 可以是 integer 或者 string。value 可以是任意类型。
此外 key 会有如下的强制转换:
包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。
浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。
数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。
如果在数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了。

以后要多多注意代码中的特殊情况。

相关文章

网友评论

      本文标题:PHP随笔 - 数组的key问题

      本文链接:https://www.haomeiwen.com/subject/gnetzctx.html