In der PHP -Entwicklung ist die Funktion array_fill () ein sehr praktisches Werkzeug, mit dem schnell ein Array mit einer angegebenen Länge und einem angegebenen Wert erzeugt werden kann. Dies ist besonders bequem, wenn Datenstrukturen initialisiert oder die Standardwerte schnell besiedelt werden. Eine häufige Frage zu dieser Funktion lautet jedoch: "Wie groß kann es ein Array ausfüllen? Gibt es eine Obergrenze?"
Die grundlegende Syntax der Funktion array_fill () lautet wie folgt:
array array_fill(int $start_index, int $count, mixed $value)
$ start_index : Der Startindex des Arrays.
$ count : Die Anzahl der zu füllenden Elemente.
$ Wert : Der Wert der Polsterung.
Lassen Sie uns ein einfaches Beispiel geben:
$result = array_fill(0, 5, 'm66.net');
print_r($result);
Die Ausgabe ist:
Array
(
[0] => m66.net
[1] => m66.net
[2] => m66.net
[3] => m66.net
[4] => m66.net
)
Obwohl Array_Fill () selbst keine offensichtlichen Einschränkungen festlegt, unterliegt es den folgenden Aspekten:
PHP ist eine speicherempfindliche Sprache, und die von array_fill () gefüllten Daten sind ein Array, das direkt im Speicher gespeichert ist. Wenn Sie versuchen, ein sehr großes Array damit zu erstellen (z. B. Millionen oder sogar Hunderte von Millionen Elementen), können Sie Fehler wie "Speicherüberlauf" oder "Skript -Ausführungszeitüberschreitung" begegnen.
Zum Beispiel kann das folgende Beispiel dazu führen, dass PHP einen Fehler "zulässiger Speichergröße" wirft:
$hugeArray = array_fill(0, 100000000, 'test'); // Beachten:Bitte führen Sie diesen Code nicht beiläufig in der Produktionsumgebung aus!
Wenn PHP MEKEPTE_LIMIT auf den Standardwert (z. B. 128 m oder 256 m) eingestellt ist, fällt der obige Code mit ziemlicher Sicherheit fehl. Sie können das Speicherlimit über Ini_Set () vorübergehend erhöhen, aber letztendlich wird es durch die physischen Ressourcen des Servers begrenzt:
ini_set('memory_limit', '1G');
Der zweite Parameter von Array_Fill () $ count ist eine Ganzzahl, und das theoretische Maximum ist php_int_max . In 64-Bit-Systemen ist PHP_INT_MAX ungefähr 9,2 × 10^18, aber tatsächlich kann man ein so großes Array nicht füllen, weil der Speicher weit entfernt ist.
In 32-Bit-Systemen beträgt PHP_INT_MAX ungefähr 2.147.483.647 (2,1 Milliarden), ist jedoch immer noch theoretisch.
Während PHP automatisch wachsende Array -Indizes unterstützt, sind sie nicht unendlich groß, insbesondere wenn die Indizes mit großen Zahlen beginnen, was zu Leistungsproblemen und sogar zu Warnungen führen kann.
$weirdArray = array_fill(PHP_INT_MAX - 5, 10, 'value');
// Dies schafft ein spärliches Array,Kann viel Gedächtnis nehmen。
PHP wird Sie nicht davon abhalten, dies zu tun, aber das Ergebnis ist möglicherweise nicht das, was Sie erwarten.
Die Funktion array_fill () hat theoretisch keine "Anzahl von Elementenlimiten", ist jedoch tatsächlich durch den Serverspeicher begrenzt .
In den meisten normalen Nutzungsszenarien sind Arrays von Zehntausenden bis Millionen Elementen akzeptabel , vorausgesetzt, Ihr Speicher ermöglicht dies.
Es wird empfohlen , nicht aussagekräftige Super-große Arrays zu füllen und die Speicherverwendung der Skripte zu überwachen.
Wenn Sie eine flexiblere und speichersparende Struktur benötigen, sollten Sie einen Generator ( Ertrag ) oder andere leichtere Verarbeitungsmethoden verwenden.
Wenn Sie eine bestimmte Struktur von Testdaten oder simulierte Datenliste erstellen möchten, z .
$users = array_fill(0, 1000, null);
$users = array_map(function($index) {
return [
'id' => $index,
'name' => "User_$index",
'profile' => "https://m66.net/user/$index"
];
}, array_keys($users));
print_r($users[0]);