使用php
array_fill和否定索引时,php
为什么只填充第一个负数指数然后跳转到0。
例如:
array_fill(-4,4,10)
应填写-4, -3, -2, -1
和0
但-4, 0, 1, 2, 3
手册确实说明了这种行为,但不是原因。
有谁能说这是为什么?
答案 0 :(得分:4)
查看PHP的来源,我可以看到他们为什么这样做了!
他们做的是创建数组中的第一个条目。在PHP中,它看起来像:
$a = array(-4 => 10);
然后,他们像这样添加每个新条目:
$count--;
while ($count--) {
$a[] = 10;
}
如果你自己做同样的事情,你会看到完全相同的行为。一个超短的PHP脚本演示了这一点:
<?php
$a = array(-4 => "Apple");
$a[] = "Banana";
print_r($a);
?>
结果:Array ( [-4] => Apple [0] => Banana )
注意强> 是的,我确实使用了PHP而不是他们使用的C源代码,因为PHP程序员可以理解它比原始源更好。然而,它大致相同,因为它们使用PHP函数来生成结果......
答案 1 :(得分:2)
也许是因为它在文档中说明:http://www.php.net/manual/en/function.array-fill.php
如果start_index为负数,则返回数组的第一个索引为start_index,后面的索引将从零开始(参见示例)。