Aktueller Standort: Startseite> Neueste Artikel> [Was passiert beim Füllen eines negativen Indexarrays mit Array_Fill? Verhaltens- und Ergebnisanalyse

[Was passiert beim Füllen eines negativen Indexarrays mit Array_Fill? Verhaltens- und Ergebnisanalyse

gitbox 2025-09-30

1. Basisnutzungsbeispiele

 <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>

Ausgangsergebnis:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; A
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; A
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; A
)
</span></span>

Dies steht im Einklang mit den Erwartungen, wobei 3 Elemente ab Index 0 ausgefüllt sind.


2. Verwenden Sie negative Zahlen als Startindex

Wenn $ start_index eine negative Zahl ist, wirft PHP keinen Fehler aus, sondern füllt das Array direkt mit der negativen Zahl als Schlüsselname.

Beispiel:

 <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>

Ausgangsergebnis:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [-</span><span><span class="hljs-number">3</span></span><span>] =&gt; B
    [-</span><span><span class="hljs-number">2</span></span><span>] =&gt; B
    [-</span><span><span class="hljs-number">1</span></span><span>] =&gt; B
)
</span></span>

Wie Sie sehen können, beginnt das Array von -3 und ist wiederum bis -1 gefüllt.
Dies zeigt, dass negative Indizes in PHP zulässig sind und gemäß den normalen Ganzzahl -Schlüsselregeln nach oben erhöht werden können.


3. Auswirkungen des Mischens mit positiven Indizes

Schauen wir uns ein anderes gemischtes Szenario an:

 <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">// Addition mit Array</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>

Ausgangsergebnis:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [-</span><span><span class="hljs-number">2</span></span><span>] =&gt; X
    [-</span><span><span class="hljs-number">1</span></span><span>] =&gt; X
    [</span><span><span class="hljs-number">3</span></span><span>] =&gt; Y
    [</span><span><span class="hljs-number">4</span></span><span>] =&gt; Y
)
</span></span>

Dies zeigt, dass auch wenn negative und positive Indizes gleichzeitig existieren, sie ihre eigenen unabhängigen Schlüsselnamenspaces beibehalten und nicht in Konflikt stehen.


4.. Dinge zu beachten

  1. Arrayschlüssel ermöglichen negative Zahlen <br> In PHP können Arrayschlüssel entweder positiv oder negativ sein, solange sie Ganzzahlen sind.

  2. Der Unterschied von Array_Merge <br> Bei der Verwendung von Array_Merge werden die Wertschlüssel wieder integriert und die negativen Tasten werden ab 0 in positiven Ganzzahlen umgewandelt.
    Beispiel:

     <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>

    Ausgangsergebnis:

     <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
    (
        [</span><span><span class="hljs-number">0</span></span><span>] =&gt; Z
        [</span><span><span class="hljs-number">1</span></span><span>] =&gt; Z
        [</span><span><span class="hljs-number">2</span></span><span>] =&gt; Z
        [</span><span><span class="hljs-number">3</span></span><span>] =&gt; W
        [</span><span><span class="hljs-number">4</span></span><span>] =&gt; W
    )
    </span></span>

    Es ist ersichtlich, dass negative Indizes während des Zusammenführungsverfahrens den ursprünglichen Schlüsselwert verlieren und umbenannt werden.