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如何处理整数索引的非连续键控数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理包含离散和连续数据的数据集

从PHP版本7.2.0开始,“数组解除引用”如何处理类型为boolean / integer / float / string的标量值?

连续正整数的和 C语言 不知道如何处理这个细节

JAVA中对Color对象共用缓存,如何处理?

如果使用Arrays Stream的整数数组的总和超过int max value(2147483647),如何处理?

C getline() - 如何处理缓冲区/如何将未知数量的值读入数组