以前年少无知的时候曾经踩过数组的一个坑,我定义了一个数组$a = [3.5=>4];但是我拿$a[3.5]是拿不到值的,原因是php的键名只能是整数或者字符串。再php手册里详细记录了非法的键名被强制转换的场景:
1、包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。
2、浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
3、布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
4、Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。
5、数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。