Aktueller Standort: Startseite> Neueste Artikel> So verwenden Sie Array_Fill_Keys, um leere Arrays zu handhaben

So verwenden Sie Array_Fill_Keys, um leere Arrays zu handhaben

gitbox 2025-05-29

Warum verursacht leere Array Probleme?

Angenommen, wir schreiben eine Funktion, die erwartet, ein Standard-Wertearray von Werten für die nachfolgende Verwendung basierend auf der von Benutzer bereitgestellten Schlüsselliste zu generieren:

 function initDefaults(array $keys, $defaultValue) {
    return array_fill_keys($keys, $defaultValue);
}

Wenn $ Keys leer ist, gibt die Funktion ein leeres Array zurück. Wenn die nachfolgende Logik des Codes nicht spezifisch leere Arrays behandelt, können die folgenden Probleme verursacht werden:

  • Traversal fehlgeschlagen : Die Schleifenbehörde wird nicht ausgeführt, was die Geschäftslogik beeinflusst.

  • Fehlende Daten : Die erwarteten Standard-Schlüsselwertpaare werden nicht generiert.

  • Programmausnahme : Zum Beispiel trat ein undefinierter Indexfehler beim Zugriff auf Array -Elemente auf.


Wie kann man Probleme effektiv vermeiden, die durch leere Arrays verursacht werden?

1. Die leeren Arrays erstellen

Stellen Sie vor dem Aufrufen von Array_Fill_keys zuerst fest, ob das Schlüsselarray leer ist:

 $keys = getKeysFromUser(); // Kann ein leeres Array zurückgeben

if (empty($keys)) {
    // Nach geschäftlichen Bedürfnissen,Wählen Sie einen Verarbeitungsplan aus:
    // 1) Geben Sie eine Reihe von Standardschlüssel zurück
    // 2) Werfen Sie eine Ausnahmeaufforderung ab
    // 3) Gibt ein leeres Array direkt zurück und ist in der nachfolgenden Verarbeitungslogik kompatibel

    $keys = ['defaultKey']; // Verwenden Sie hier einen Standardschlüssel
}

$array = array_fill_keys($keys, 0);

Diese Methode kann sicherstellen, dass $ Array mindestens ein Element enthält, wodurch Fehler beim anschließenden Zugriff vermieden werden.

2. Stellen Sie die Standardschlüsselliste ein

Wenn das Geschäft dies zulässt, kann ein fester Satz von Standardschlüssel als Alternative definiert werden:

 function safeFillKeys(array $keys, $defaultValue, array $defaultKeys = ['default']) {
    if (empty($keys)) {
        $keys = $defaultKeys;
    }
    return array_fill_keys($keys, $defaultValue);
}

Wenn angerufen:

 $result = safeFillKeys([], 0, ['key1', 'key2']);
print_r($result);

Auf diese Weise kann auch wenn ein leeres Array übergeben wird, eine angemessene Standardstruktur zurückgegeben werden.

3.. Verwenden Sie die Zusammenführungsstrategie

Durch die Kombination des in Key Array und des Standard -Taste -Arrays übergebenen Arrays wird sichergestellt, dass das endgültige Array nicht leer ist:

 $keys = array_unique(array_merge($keys, ['fallbackKey']));
$array = array_fill_keys($keys, null);

Array_Unique garantiert, dass der Schlüssel nicht wiederholt wird, Array_merge endet die Standardschlüssel an. Dies vermeidet die leere Array -Situation.

4. kompatibel mit leeren Arrays in der Geschäftslogik

Wenn Sie das Anrufzeitpunkt von Array_Fill_Keys nicht steuern können, können Sie das Urteilsvermögen hinzufügen, wenn Sie das Ergebnis verwenden:

 $array = array_fill_keys($keys, 0);

if (empty($array)) {
    // Sonderbehandlung,Initialisieren Sie beispielsweise den Standardwert
    $array = ['default' => 0];
}

// Weiter zur Follow-up-Verarbeitung

Zusammenfassen

Array_Fill_Keys ist eine kurze und effiziente Funktion, aber wenn das Eingabetaste -Array leer ist, kann das Verhalten der Rückgabe eines leeren Arrays versteckte Gefahren für das Programm verursachen. Zu den angemessenen Vorsichtsmaßnahmen gehören:

  • Bestimmen Sie, ob das Eingangsarray im Voraus leer ist.

  • Setzen Sie den Standard -Schlüsselwertsatz.

  • Zusammenführen Sie das übergebene Schlüsselarray mit dem Standard -Taste -Array;

  • Kompatibel mit leeren Array -Situationen in der Geschäftslogik.

Dies kann die Robustheit und Stabilität des Programms gewährleisten und logische Schwachstellen oder Fehler durch leere Arrays vermeiden.


 // Codebeispiel:Sicherer Gebrauch array_fill_keys
function safeArrayFillKeys(array $keys, $value, array $defaultKeys = ['default']) {
    if (empty($keys)) {
        $keys = $defaultKeys;
    }
    return array_fill_keys($keys, $value);
}

$keys = []; // Wahrscheinlich leer
$result = safeArrayFillKeys($keys, 0);
print_r($result);