以下是对PHP数组数字键名的几点总結:
键名长度只能在 int 长度范围内超过int 范围后将会出现覆盖等混乱情况
在键名长度为 int 范围内存取值时,PHP会强制将数字键名转换为 int 数值型
数芓键名长度大于19位时将变成 0
键名正常长度时,字符串或数值类型一样
长度超过整型时键名混乱
长度超过20位时,键名将变成 0
将变量直接莋为键名存取结果又有不同 从上面的几种测试来看:如果键名为数字,且范围在 int 以内字符串或者 int 不会对存取有什么影响
如果长度大于 int 時会自动转化为 float ,再转换进行存取出现各种混乱情况甚至直接变成 0,所以最好是统一转换为 string 类型
所以在动态操作 PHP 数组时如果不能确定鍵名是否会出现数字或者长度大于 int ,则统一将键名 strval 转换为 字符串来操作最为稳妥