掠过我脑海的随机问题:
如果我在PHP中定义一个数组,像这样:PHP内存和数组分配
$arr = Array();
$arr[7392171] = "some value";
这是如何内部存储?它是否将键7392171映射到“某些值”,还是像JavaScript一样工作,并在其之前放置了7392170个空值?
我猜这是前者,因为索引和关联数组是相同的(至少从我的理解),并与JavaScript中的对象相比。
所以是的,只是想知道:)
掠过我脑海的随机问题:
如果我在PHP中定义一个数组,像这样:PHP内存和数组分配
$arr = Array();
$arr[7392171] = "some value";
这是如何内部存储?它是否将键7392171映射到“某些值”,还是像JavaScript一样工作,并在其之前放置了7392170个空值?
我猜这是前者,因为索引和关联数组是相同的(至少从我的理解),并与JavaScript中的对象相比。
所以是的,只是想知道:)
测试与var_dump($arr)
如果创建739217个空值,你会看到它:)
欢呼:)
。应该意识到这一点。另外,由于Array(1 =>“a”,2 =>“b”)和Array(2 =>“b”,1 =>“a”)不同。感谢你的回答。 – 2010-11-19 00:48:24
所有阵列关联地存储在PHP。密钥名称不需要与其订单有任何关联。
旁边的问题 - 这是通过哈希映射我猜?
为什么你认为JavaScript会在它之前放置7392170个空值? – Hamish 2010-11-19 01:01:26
因为:'var arr = []; arr [7392171] =“某个值”;'如果您现在查看该数组,您将获得',,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,(大量的逗号),,,,,,,,,,,“一些值” - - 这就是为什么。 – 2010-11-19 01:07:49
哦,并且因为在那个赋值之后,'arr.length'返回7392171. – 2010-11-19 01:08:09