2010-11-19 44 views
3

掠过我脑海的随机问题:
如果我在PHP中定义一个数组,像这样:PHP内存和数组分配

$arr = Array(); 
$arr[7392171] = "some value"; 

这是如何内部存储?它是否将键7392171映射到“某些值”,还是像JavaScript一样工作,并在其之前放置了7392170个空值?
我猜这是前者,因为索引和关联数组是相同的(至少从我的理解),并与JavaScript中的对象相比。
所以是的,只是想知道:)

+0

为什么你认为JavaScript会在它之前放置7392170个空值? – Hamish 2010-11-19 01:01:26

+0

因为:'var arr = []; arr [7392171] =“某个值”;'如果您现在查看该数组,您将获得',,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,(大量的逗号),,,,,,,,,,,“一些值” - - 这就是为什么。 – 2010-11-19 01:07:49

+0

哦,并且因为在那个赋值之后,'arr.length'返回7392171. – 2010-11-19 01:08:09

回答

3

测试与var_dump($arr)

如果创建739217个空值,你会看到它:)

欢呼:)

+0

。应该意识到这一点。另外,由于Array(1 =>“a”,2 =>“b”)和Array(2 =>“b”,1 =>“a”)不同。感谢你的回答。 – 2010-11-19 00:48:24

0

所有阵列关联地存储在PHP。密钥名称不需要与其订单有任何关联。

旁边的问题 - 这是通过哈希映射我猜?