<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 開始,依次填充到-1。
這說明負數索引在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>可見,負數索引在合併過程中會丟失原有的鍵值,轉而重新編號。