我对数组的性能有疑问...... php如何处理数组键?我的意思是,如果我执行类似$my_city = $cities[15];
的操作.... php是否直接访问$cities
数组中的确切行项,或者php迭代数组直到找到匹配的行?
如果它直接访问该行... 100行的数组和100,000行的数组之间的性能是否存在差异?
像这个例子中一样$my_city = $cities[15];
答案 0 :(得分:6)
PHP的数组实现为哈希表,因此可以直接访问元素,而无需迭代所有内容。在此处阅读有关算法的更多信息:http://en.wikipedia.org/wiki/Hash_table
答案 1 :(得分:0)
直接访问它。在幕后,一切都是内存指针算术。我几乎不相信PHP中的数组概念或实现与C,Java或C#等其他语言有所不同。
答案 2 :(得分:0)
这也取决于数组内部的内容。
// $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];
可能不是您问题的直接答案,但对对象的引用通常使用的内存少于变量副本。
答案 3 :(得分:-2)
在具有100行的数组和具有100,000行的数组
之间总是存在明显的性能差异