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.
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.
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.
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.
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
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);