简而言之,PHP没有非关联数组.
@Sectus在PHP数组的底层实现上发布了一个很好的答案.理解“引擎盖下”发生的事情通常是有益的.但无论它们的底层实现如何,PHP数组都会作为与键关联的值的有序映射(即关联数组)向PHP开发人员公开.总是.
An array in PHP is actually an ordered map. A map is a type that associates values to keys.
和
PHP arrays can contain integer and string keys at the same time as PHP does not distinguish between indexed and associative arrays.
和
The key can either be an integer or a string.
数组被数字索引的误解是由于在没有明确指定密钥的情况下为了方便而自动递增整数键的特征.
但是请注意,即使所有键都是整数,也不能保证PHP中的项目存在于例如$arr [0],据我所知,这是任何其他使用索引数组的语言(即假设索引)数组包含至少一个元素,并且基于0).
这不是一个微不足道的区别.依赖于PHP数组的IMHO程序员表现得像索引数组而没有考虑到潜在的后果或对差异的理解*可能会为自己(或未来的维护者)设置奇怪/意外的行为.
*我已经对此进行了限定,因为显然有一些明智的做法是利用类似于索引的方便/数组的PHP语言功能可以带来好处.