什么是php';在直接访问阵列';指定了键的行

什么是php';在直接访问阵列';指定了键的行,php,arrays,performance,key,Php,Arrays,Performance,Key,我有一个关于阵列性能的问题。。。。php如何处理数组键?我的意思是,如果我做了一些像$my_city=$cities[15]。。。。php是直接访问$cities数组中的确切行项目,还是迭代数组直到找到匹配的行 如果它直接访问行。。。具有100行的阵列与具有100000行的阵列在性能上是否存在差异 就像这个例子一样 $my_city=$cities[15]它可以直接访问它。幕后的一切都是内存指针算法。我很难相信PHP中的数组概念或实现与其他语言(如C、Java或C#)有所不同。PHP的数组是作为

我有一个关于阵列性能的问题。。。。php如何处理数组键?我的意思是,如果我做了一些像
$my_city=$cities[15]。。。。php是直接访问
$cities
数组中的确切行项目,还是迭代数组直到找到匹配的行

如果它直接访问行。。。具有100行的阵列与具有100000行的阵列在性能上是否存在差异

就像这个例子一样
$my_city=$cities[15]

它可以直接访问它。幕后的一切都是内存指针算法。我很难相信PHP中的数组概念或实现与其他语言(如C、Java或C#)有所不同。

PHP的数组是作为哈希表实现的,因此可以尽可能直接地访问元素,而无需遍历所有内容。请在此处阅读有关算法的更多信息:

具有100行的阵列和具有100000行的阵列在性能上总是存在明显差异,这也取决于阵列内部的内容

// $my_city is a reference to the variable
$cities[15] = new stdobj();    
$my_city = $cities[15];

// $my_city is a copy of the array row
$cities[15] = 'foobar';    
$my_city = $cities[15];

可能不是对您问题的直接回答,但对对象的引用通常比变量副本占用更少的内存。

我猜哈希表与关联数组(带对键值)的大小写更相关。@Artem因为PHP中只有一种类型的数组,所以我怀疑没有真正的区别(尽管我不是100%确定)。数字索引数组只是带有数字键的关联数组。这可能会对你有所帮助:在正确实现的哈希算法中,它应该不会有什么区别。至少初始化和消耗更多内存需要更多的时间。这样的散列导航也会让你付出一些代价。纯粹的访问时间实际上不会受到数组大小的影响。数组本身的初始化或内存消耗与此无关。