PHP数组追加元素出现负索引异常:为何索引为-5而非0?
异常原因解析
首先明确PHP中$array[]追加元素的索引规则:
- 在PHP 5.0及之后的标准版本中,当用空括号追加元素时,PHP只会识别数组里最大的正整数索引,将其加1作为新元素的索引;如果数组里没有正整数索引,就默认用0作为新索引。这也是你在5.6-8.1版本中得到索引0的原因。
- 你遇到的索引变为-5的异常情况,几乎可以确定是环境使用了PHP 4及更早的老旧版本。在这些版本中,PHP计算自动索引的逻辑是取数组里所有整数索引的最大值(包括负索引),然后加1。你的数组里最大的整数索引是-6,加1后就是-5,所以新元素的索引会变成-5。
除此之外,也不排除该环境使用了被篡改过的PHP版本(修改了数组自动索引的生成逻辑),但最常见的原因还是使用了过旧的PHP版本。
内容的提问来源于stack exchange,提问作者Caio Leonardo
相关产品推荐
相关产品推荐

