当使用php
array_fill,负指数,为什么只php
填写的首次负指数之,然后跳转到0PHP - array_fill负指数
例如:
array_fill(-4,4,10)
应填写-4, -3, -2, -1
和0
但它是否-4, 0, 1, 2, 3
该手册没有说明这种行为,但不是为什么。
有谁能说这是为什么?
当使用php
array_fill,负指数,为什么只php
填写的首次负指数之,然后跳转到0PHP - array_fill负指数
例如:
array_fill(-4,4,10)
应填写-4, -3, -2, -1
和0
但它是否-4, 0, 1, 2, 3
该手册没有说明这种行为,但不是为什么。
有谁能说这是为什么?
查看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函数来生成结果...
但是,这个源代码没有解释为什么 – Voitcus 2013-03-24 21:30:21
嗯,那是我想的。我最好的猜测是,他们为什么懒惰。它可能是教科书编程概念之一,数组中的负指数不好,但他们不会在评论或任何内容中说... – 2013-03-24 21:31:14
也许是因为它在文档中指出:http://www.php.net/manual/en/function.array-fill.php
如果START_INDEX为负,则返回数组的第一个指数将START_INDEX和下面的指标将从零开始(见例子)。
“这不是一个错误,它是一个功能”。 – Voitcus 2013-03-24 21:27:26
除非你能找到实现它的人,否则我不认为这个问题*“他们为什么这么做”*是真正的答案。 – deceze 2013-03-24 21:32:25