我有一个关于PHP数组的问题。
如果我创建一个数组
$ids = array();然后把某样东西放在它的1000个位置:
$ids[1000] = 5;解释器如何在内部做到这一点?数组像Java一样是连续的内存块吗?它会像int1000一样初始化1000个int吗?
或者它更像是一个地图,其中1000是键,它链接到5的数据?我说的是PHP的内部结构。
如果我有一个很大的索引,效率会不会降低,因为它必须初始化所有的索引?或者它是以数字为关键字的地图?
发布于 2009-12-28 03:33:49
数组是PHP中的散列。因此,在您的术语中,它们是映射的。您可以在示例中检查这一点,方法是在初始化后查看$ids[0...999],查看它们是否不存在,并在初始化前后比较memory_get_usage()。
发布于 2009-12-28 03:29:53
PHP中的所有数组都是保持插入顺序的有效关联数组。所以:
$array[1000] = 5;从根本上说与:
$array['hello'] = 'world';https://stackoverflow.com/questions/1966774
复制相似问题