6

php array_fillと負のインデックスを使用する場合、なぜphp最初の負のインデックスのみを埋めてから0にジャンプするのですか。

例えば:

array_fill(-4,4,10)満たす必要が-4, -3, -2, -1あり0ますが、-4, 0, 1, 2, 3

マニュアルにはこの動作が記載されていますが、理由は記載されていません。

なぜこれなのか誰かが言うことができますか?

4

2 に答える 2

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関数を使用しているため、ほぼ同じ効果です...

于 2013-03-24T21:28:17.083 に答える
2

おそらくそれはドキュメントに記載されているためです:http ://www.php.net/manual/en/function.array-fill.php

start_indexが負の場合、返される配列の最初のインデックスはstart_indexになり、次のインデックスはゼロから始まります(例を参照)。

于 2013-03-24T21:18:10.733 に答える