<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'A'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>出力結果:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => A
[</span><span><span class="hljs-number">1</span></span><span>] => A
[</span><span><span class="hljs-number">2</span></span><span>] => A
)
</span></span>これは期待と一致しており、インデックス0から3つの要素が入力されています。
$ start_indexが負の数値である場合、PHPはエラーをスローしませんが、キー名としてマイナス数をアレイに直接埋めます。
例:
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill</span></span><span>(-</span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'B'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>出力結果:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[-</span><span><span class="hljs-number">3</span></span><span>] => B
[-</span><span><span class="hljs-number">2</span></span><span>] => B
[-</span><span><span class="hljs-number">1</span></span><span>] => B
)
</span></span>ご覧のとおり、アレイは-3から始まり、順番に満たされます。
これは、PHPで負のインデックスが許可されており、通常の整数キールールに従って上方に増加できることを示しています。
別の混合シナリオを見てみましょう:
<span><span><span class="hljs-variable">$result1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill</span></span><span>(-</span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'X'</span></span><span>);
</span><span><span class="hljs-variable">$result2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill</span></span><span>(</span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'Y'</span></span><span>);
</span><span><span class="hljs-variable">$merged</span></span><span> = </span><span><span class="hljs-variable">$result1</span></span><span> + </span><span><span class="hljs-variable">$result2</span></span><span>; </span><span><span class="hljs-comment">// 配列を使用した追加</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$merged</span></span><span>);
</span></span>出力結果:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[-</span><span><span class="hljs-number">2</span></span><span>] => X
[-</span><span><span class="hljs-number">1</span></span><span>] => X
[</span><span><span class="hljs-number">3</span></span><span>] => Y
[</span><span><span class="hljs-number">4</span></span><span>] => Y
)
</span></span>これは、ネガティブとポジティブのインデックスが同時に存在していても、独自の独立したキーネームスペースを維持し、矛盾しないことを示しています。
配列キーは負の数値を許可します<br> PHPでは、アレイキーが整数である限り、正または負になる可能性があります。
array_merge <br>との違い array_mergeを使用する場合、バリューキーが再インネックスされ、ネガティブキーは0から始まる正の整数に再編成されます。
例:
<span><span><span class="hljs-variable">$a</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill</span></span><span>(-</span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'Z'</span></span><span>);
</span><span><span class="hljs-variable">$b</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill</span></span><span>(</span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'W'</span></span><span>);
</span><span><span class="hljs-variable">$merged</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_merge</span></span><span>(</span><span><span class="hljs-variable">$a</span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$merged</span></span><span>);
</span></span>出力結果:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => Z
[</span><span><span class="hljs-number">1</span></span><span>] => Z
[</span><span><span class="hljs-number">2</span></span><span>] => Z
[</span><span><span class="hljs-number">3</span></span><span>] => W
[</span><span><span class="hljs-number">4</span></span><span>] => W
)
</span></span>ネガティブインデックスは、マージプロセス中に元のキー値を失い、変更されることがわかります。