我对PHP数组有疑问。
如果我创建一个数组
$ids = array();
然后把东西放在1000的位置:
$ids[1000] = 5;
口译员如何在内部执行此操作?数组像Java一样是连续的内存块吗?它会像int [1000]那样初始化1000个int?
或者它更像是一个地图,其中1000是关键,它链接到5的数据?我在谈论PHP的内部。
如果我有一个大数字索引,它会不会有效率,因为它必须初始化所有索引?或者是基于数字作为关键字的地图吗?
答案 0 :(得分:2)
PHP中的所有数组都是有效的关联数组,可以维护插入顺序。所以:
$array[1000] = 5;
基本上没有区别:
$array['hello'] = 'world';
答案 1 :(得分:1)
数组是PHP中的哈希。所以按照你的意思,它们是映射的。您可以在初始化后查看$ids[0...999]
以查看它们不存在,并在初始化之前和之后比较memory_get_usage()
,在您的示例中进行检查。