Aktueller Standort: Startseite> Neueste Artikel> Array_Fill () Analyse des Grundes, warum die Schaffung eines assoziativen Arrays fehlschlägt

Array_Fill () Analyse des Grundes, warum die Schaffung eines assoziativen Arrays fehlschlägt

M66 2025-05-14

In PHP ist Array_Fill () eine häufig verwendete Funktion, die ein Array der angegebenen Länge erstellt und jedem Element im Array einen angegebenen Wert zuweist. Es ist zwar großartig für die Erstellung indizierter Arrays, aber es schlägt häufig bei der Erstellung von assoziativen Arrays fehl, was dazu führt, dass Entwickler verwirrt sind. In diesem Artikel wird die häufigsten Probleme im Detail analysiert, wenn assoziative Arrays mit Array_Fill () erstellt und Lösungen bereitgestellt werden.

Einführung in die Funktion array_fill ()

Die Funktion array_fill () wird verwendet, um ein Array zu füllen, und akzeptiert drei Parameter:

 array_fill(int $start_index, int $num, mixed $value): array
  • $ start_index : Der Startindex des Arrays.

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

  • $ Wert : Der Wert, der zum Ausfüllen des Arrays verwendet wird.

Array_Fill () wird häufig verwendet, um eindimensionale numerische Indexarrays zu erzeugen. Zum Beispiel:

 $array = array_fill(0, 5, 'PHP');
print_r($array);

Dadurch wird ein Array erstellt, das mit Index 0 beginnt und 5 Elemente enthält, die jeweils einen Wert von "PHP" haben. Die Ausgabe ist wie folgt:

 Array
(
    [0] => PHP
    [1] => PHP
    [2] => PHP
    [3] => PHP
    [4] => PHP
)

Warum erstellt Array_Fill () kein assoziatives Array?

Obwohl Array_Fill () beim Erstellen indizierter Arrays sehr bequem ist, kann es nicht direkt verwendet werden, um assoziative Arrays zu erstellen. Dies liegt daran, dass die Funktion array_fill () auf Ganzzahlindizes abhängt, während das assoziative Array aus String -Indizes besteht. Bei Verwendung von Array_Fill () verarbeitet PHP den Index als Zahl, sodass es unmöglich ist, ein assoziatives Array direkt zu erstellen.

Beispielsweise fällt der folgende Code fehl:

 $array = array_fill('key1', 3, 'value');
print_r($array);

Der Zweck dieses Codes besteht darin, ein assoziatives Array mit dem Schlüsselnamen 'Key1' zu erstellen, aber es macht einen Fehler, da Array_Fill () nur Integer -Indizes akzeptiert.

Gemeinsame Ursache Analyse

  1. Indextypfehler
    Array_Fill () gilt nur für Arrays mit numerischen Indizes. Wenn Sie versuchen, ein Array mit einem String -Index zu füllen, schlägt die Funktion aufgrund des Typs Fehlanpassung aus.

  2. Anzahl der Array -Elemente <br> Bei Verwendung von Array_Fill () repräsentiert der zweite Parameter $ num die Länge des Arrays und muss eine positive Ganzzahl sein. Wenn eine Zahl, die die Anforderungen nicht entspricht (z. B. negative Zahlen oder Nullen), bereitgestellt wird, schlägt die Funktionsausführung fehl.

Wie löst ich dieses Problem?

  1. Verwenden Sie Array_Fill_keys () , um ein assoziatives Array zu erstellen

    Wenn Sie ein assoziatives Array erstellen müssen, können Sie die Funktion array_fill_keys () verwenden. Sie können den Schlüsselnamen eines assoziativen Arrays angeben und ihm einen Wert zuweisen. Zum Beispiel:

     $keys = ['key1', 'key2', 'key3'];
    $value = 'PHP';
    $array = array_fill_keys($keys, $value);
    print_r($array);
    

    Dieser Code wird ausgegeben:

     Array
    (
        [key1] => PHP
        [key2] => PHP
        [key3] => PHP
    )
    
  2. Mit Schleifen manuell assoziative Arrays erstellen

    Wenn Sie eine andere Logik verwenden möchten, um ein Array zu füllen, können Sie für Schleifen oder für Schleifen manuell erstellen. Zum Beispiel:

     $keys = ['key1', 'key2', 'key3'];
    $value = 'PHP';
    $array = [];
    
    foreach ($keys as $key) {
        $array[$key] = $value;
    }
    
    print_r($array);
    

    Die Ausgabe ist die gleiche wie Array_Fill_keys () .

  3. Verwenden Sie Array_map () mit Array_keys ()

    Eine andere Lösung besteht darin, die Funktion array_map () in Verbindung mit Array_Keys () zu verwenden, um ein assoziatives Array zu generieren. Zum Beispiel:

     $keys = ['key1', 'key2', 'key3'];
    $value = 'PHP';
    $array = array_combine($keys, array_fill(0, count($keys), $value));
    print_r($array);
    

    Dieser Code verschmilzt den Schlüsselnamen mit dem gepolsterten Wert über Array_combine (), um ein assoziatives Array zu generieren.

Zusammenfassen

Die Funktion array_fill () ist ein sehr nützliches Werkzeug in PHP, ist jedoch nicht zum Erstellen von assoziativen Arrays geeignet. Wenn Sie ein assoziatives Array erstellen müssen, können Sie Array_Fill_keys () verwenden oder manuell eine Schleife erstellen. Durch das Verständnis seiner Einschränkungen können wir Array_Fill () effizienter verwenden, um praktische Probleme zu lösen.

Referenzlink: