php - array_fill负面指数

时间:2013-03-24 21:15:52

标签: php

使用php array_fill和否定索引时,php为什么只填充第一个负数指数然后跳转到0。

例如:

array_fill(-4,4,10)应填写-4, -3, -2, -10-4, 0, 1, 2, 3

手册确实说明了这种行为,但不是原因。

有谁能说这是为什么?

2 个答案:

答案 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,后面的索引将从零开始(参见示例)。