数字索引的PHP数组是连续初始化还是映射?

时间:2009-12-27 19:27:54

标签: php initialization interpreter

我对PHP数组有疑问。

如果我创建一个数组

$ids = array();

然后把东西放在1000的位置:

$ids[1000] = 5;

口译员如何在内部执行此操作?数组像Java一样是连续的内存块吗?它会像int [1000]那样初始化1000个int?

或者它更像是一个地图,其中1000是关键,它链接到5的数据?我在谈论PHP的内部。

如果我有一个大数字索引,它会不会有效率,因为它必须初始化所有索引?或者是基于数字作为关键字的地图吗?

2 个答案:

答案 0 :(得分:2)

PHP中的所有数组都是有效的关联数组,可以维护插入顺序。所以:

$array[1000] = 5;

基本上没有区别:

$array['hello'] = 'world';

答案 1 :(得分:1)

数组是PHP中的哈希。所以按照你的意思,它们是映射的。您可以在初始化后查看$ids[0...999]以查看它们不存在,并在初始化之前和之后比较memory_get_usage(),在您的示例中进行检查。