PHP如何处理整数索引的非连续键控数组?

Posted

技术标签:

【中文标题】PHP如何处理整数索引的非连续键控数组?【英文标题】:How does PHP handle integer indexed non-consecutive keyed arrays? 【发布时间】:2011-06-17 01:10:09 【问题描述】:

我很好奇在 php 中存储具有非连续整数索引的数组的效率如何。

如果我有一个数组

$b = array();
$b[1] = "Hello";
$b[18] = "World";
$b[999] = "Test";

这些键是否被存储,然后散列到一个新的数组中,PHP 是如何处理的?

【问题讨论】:

重复,见this question 【参考方案1】:

来自数组上的php wep site:

PHP 中的数组实际上是一个有序映射。映射是将值与键相关联的类型。这种类型针对几种不同的用途进行了优化;它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等等。由于数组值可以是其他数组,所以树和多维数组也是可以的。

执行 print_r($b);在您的代码上给出以下输出:

Array
(
    [1] => Hello
    [18] => World
    [999] => Test
)

【讨论】:

我需要创建一个这样的数组。我将值存储到 mysql 记录 ID 以供以后处理。但是在我的情况下,mysql 记录 ID 从 100,000 开始并上升 - 所以数组将是 $ar = array([100001] => "Blah", [305278] = "Foo", [412731] = "FooBar") 所以稍后我可以将数组引用为 $ar[$recordID]

以上是关于PHP如何处理整数索引的非连续键控数组?的主要内容,如果未能解决你的问题,请参考以下文章