Aktueller Standort: Startseite> Neueste Artikel> Wie effektiv ist Array_Fill (), um spärliche Arrays zu erstellen?

Wie effektiv ist Array_Fill (), um spärliche Arrays zu erstellen?

M66 2025-06-05

Während der Entwicklung von PHP begegnen wir häufig Szenarien, in denen wir "spärliche Arrays" erstellen müssen - dh nur bestimmte spezifische Indizes im Array haben Werte, und andere Teile sind leer oder undefiniert. In PHP können spärliche Arrays durch manuelle Zuordnung implementiert werden, aber einige Entwickler haben versucht, diesen Prozess mithilfe der Funktion array_fill () zu vereinfachen. Ist Array_Fill () wirklich geeignet, um spärliche Arrays zu erstellen? Lassen Sie es uns vor Ort analysieren.

Was ist Array_Fill () ?

Array_Fill () ist eine Funktion zum schnellen Ausfüllen von Arrays. Die grundlegende Syntax ist wie folgt:

 array array_fill ( int $start_index , int $count , mixed $value )
  • $ start_index : start index.

  • $ count : Die Anzahl der zu füllenden Elemente.

  • $ Wert : Der Wert jedes Elements.

Zum Beispiel:

 $result = array_fill(5, 3, 'test');
print_r($result);

Die Ausgabe ist wie folgt:

 Array
(
    [5] => test
    [6] => test
    [7] => test
)

Wie Sie sehen können, füllt es 3 Elemente mit dem Wert 'Test' ab Index 5.

Eigenschaften von spärlichen Arrays

Ein zentrales Merkmal von spärlichen Arrays ist, dass zwischen den Indizes "Löcher" besteht. Zum Beispiel müssen wir im Array möglicherweise nur Werte für Index 3, 15 und 1000 haben, während der Rest leer oder undefiniert bleibt.

Manuell aussehen, wie spärliche Arrays so aussehen, könnten wie folgt aussehen:

 $data = [];
$data[3] = 'alpha';
$data[15] = 'beta';
$data[1000] = 'gamma';

Dieser Ansatz ist sehr intuitiv und das Array selbst nimmt nicht zu viel Platz ein, da das Array von PHP im Wesentlichen eine geordnete Karte (Hash -Tabelle) ist und undefinierte Indizes nicht wirklich in Erinnerung bleiben.

Ist es in Ordnung, spärliche Arrays mit Array_Fill () zu erstellen?

Theoretisch können Sie Array_Fill () verwenden, um ein bestimmtes kontinuierliches spärliches Segment zu erstellen. Zum Beispiel:

 $data = array_fill(1000, 1, 'only_one');

Ausgabe:

 Array
(
    [1000] => only_one
)

Dies implementiert die Zuordnung in Hochbit-Indizes, aber Array_Fill () kann nicht einmal erfolgen, wenn Sie mehrere diskontinuierliche Indexwerte HOP-für erstellen möchten (z. B. Werte für 3, 15 und 1000 gleichzeitig). Sie müssen es mehrmals nennen:

 $data = array_fill(3, 1, 'alpha') + 
        array_fill(15, 1, 'beta') + 
        array_fill(1000, 1, 'gamma');

Dies erhält eine spärliche Array -Struktur, die Sie gewünscht haben, aber dies verliert tatsächlich den Vorteil der "effizienten Chargenerzeugung". Im Gegensatz dazu ist eine direkte manuelle Zuordnung prägnanter:

 $data = [
    3 => 'alpha',
    15 => 'beta',
    1000 => 'gamma'
];

Wann sollte Array_Fill () verwendet werden?

Der Vorteil von Array_Fill () ist die kontinuierliche Initialisierung, zum Beispiel:

  • Generieren Sie Anfangswerte für die Tabelle.

  • Einheitliche Initialisierung einer bestimmten Struktur (z. B. 0 Padding, boolesche Polsterung).

  • Steuert das anfängliche Offset -Kabel, um die Startposition zu verursachen.

Wenn Sie jedoch vor der Notwendigkeit von spärlichen Arrays mit "diskontinuierlichen Indizes" oder "großen Intervallen" ausgesetzt sind, ist dies nicht das am besten geeignete Werkzeug.

Zusammenfassen

Array_Fill () ist eine sehr nützliche Funktion zum schnellen Initialisieren von Arrays mit kontinuierlichen Indizes. Aber wenn es ein typisches "spärliches Array" baut, scheint es machtlos zu sein. Wenn Ihre Anforderungen diskontinuierliche spärliche Arrays sind, ist die Methode der direkten Verwendung der Indexzuordnung flexibler und kontrollierbarer.

Wenn Sie natürlich über eine einheitliche Logik verfügen, um spärliche Index -Arrays zu erstellen, können Sie auch eine Helferfunktion zusammenschließen, um Array_Fill () Implementierung zu kombinieren. Zum Beispiel:

 function sparse_fill(array $indexes, $value) {
    $result = [];
    foreach ($indexes as $index) {
        $result[$index] = $value;
    }
    return $result;
}

$data = sparse_fill([3, 15, 1000], 'example');

Diese Methode eignet sich besser für groß angelegte spärliche Füllanforderungen und ist leichter zu warten.

Weitere Lesen