當使用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