Nach der offiziellen PHP -Dokumentation kann der $ start_index von array_fill () negative Zahlen akzeptieren. Dies bedeutet, dass PHP es als die Position, die vom Ende des Arrays beginnt, als die negative Zahl als $ start_index übergeben wird.
Wenn $ start_index beispielsweise -1 ist, zeigt es auf das letzte Element des Arrays. Wenn $ start_index -2 ist, zeigt es auf das vorletzte Element und so weiter.
$array = array_fill(-3, 5, 'PHP');
print_r($array);
In diesem Beispiel geben wir eine negative Zahl -3 , was darauf hinweist, dass die Füllung von der dritten letzten Position des Arrays beginnt. Das Ergebnis wird sein:
Array
(
[0] => PHP
[1] => PHP
[2] => PHP
[3] => PHP
[4] => PHP
)
Obwohl wir -3 als Startindex bestanden haben, erzeugt die Funktion array_fill () keinen Fehler oder eine Warnung, sondern füllt das Array erfolgreich, und die Startposition wird automatisch gemäß dem negativen Index angepasst. Das endgültige Array kann immer noch erfolgreich aus dem Index 0 erstellt werden.
Obwohl die Verwendung einer negativen Zahl als Parameter $ start_index in einigen Fällen gültig ist, kann er auch zu unerwarteten Ergebnissen oder schwer verständlichem Verhalten führen. Insbesondere wenn der anfängliche Index eines Arrays nicht von Null beginnt oder das Array nicht genügend Elemente hat, können negative Indizes zu Verwirrung führen.
Wenn der Parameter $ num von array_fill () groß ist und $ start_index eine negative Zahl ist, kann er versuchen, auf einen Ort des Arrays zuzugreifen, der nicht existiert. Zum Beispiel:
$array = array_fill(-10, 5, 'PHP');
print_r($array);
In diesem Fall wird -10 als 10. Position vor dem Ende des Arrays angesehen. Wenn das ursprüngliche Array leer oder nicht ausreicht, um die Polsterung aus negativen Indizes zu unterstützen, kann dies zu unerwarteten Ergebnissen führen. Obwohl PHP keinen Fehler meldet, wird sein Verhalten dazu veranlasst, die erwarteten Ergebnisse nicht zu erzielen.
Das Verhalten negativer Indizes kann Verwirrung verursachen, wenn der ursprüngliche Index eines Arrays nicht von Null gestartet wird. Wenn es beispielsweise bereits ein Array gibt und es an Array_Fill () übergeben hat, wird der Index des resultierenden Arrays unvorhersehbar, wenn $ start_index negativ ist.
Um die oben genannten Probleme zu vermeiden, wird empfohlen, das übergebene $ start_index bei Verwendung von Array_Fill () zu überprüfen. Wenn Sie vom Ende des Arrays mit der Polsterung beginnen müssen, können Sie negative Indizes explizit verwenden. Stellen Sie jedoch sicher, dass negative Indizes die Polster nicht über die Grenzen des Arrays überschreiten, insbesondere wenn es sich um dynamische Daten handelt.
Wenn Sie nicht möchten, dass das Füllverhalten den erwarteten Bereich überschreitet, können Sie zuerst überprüfen, ob $ start_index angemessen ist, oder Funktionen wie Array_Slice () verwenden, um die Größe des Arrays vor dem Füllen zu begrenzen.