Aktueller Standort: Startseite> Neueste Artikel> Probleme, die bei der Kombination von Array_Change_key_Case () mit Array_Merge () auftreten können.

Probleme, die bei der Kombination von Array_Change_key_Case () mit Array_Merge () auftreten können.

M66 2025-05-11

Bei der Bearbeitung von Arrays in PHP werden Array_Change_key_case () und Array_merge () beide sehr häufig verwendete Funktionen. Einer kann die Schlüssel eines Arrays so einheitlich umwandeln, und der andere wird verwendet, um Arrays zu verschmelzen. Beide scheinen einfach und unkompliziert zu sein, aber wenn sie es sind, sind sie leicht zu stecken, besonders wenn sie mit ihnen umgehen.

Funktion Einführung

  • Array_Change_key_Case (Array $ Array, int $ case = case_lower) : Konvertiert alle Schlüsselnamen des Arrays in Kleinbuchstaben oder Großbuchstaben.

  • Array_Merge (Array ... $ Arrays) : Fucken Sie einen oder mehrere Arrays zusammen.

Pit-Punkt-Analyse: Schlüsseldamen sind unempfindliche, aber fallempfindlich

Die Schlüsselnamen von Arrays in PHP zeigen in einigen Funktionen unterschiedliche "Empfindlichkeit" - beispielsweise ist array_merge () fallempfindlich, während array_change_key_case () einheitlich gilt. Dies kann zu Problemen wie "doppelten Schlüssel, die nicht überschrieben" oder "unerwartet überschrieben" während der Zusammenführung führen.

Beispiel 1: Unerwartete Schlüsselüberlagerung

 $arr1 = ['Name' => 'Alice'];
$arr2 = ['name' => 'Bob'];

$result = array_merge(
    array_change_key_case($arr1, CASE_LOWER),
    array_change_key_case($arr2, CASE_LOWER)
);

print_r($result);

Ausgabe:

 Array
(
    [name] => Bob
)

Es sieht normal aus, oder? Weil wir alle in Kleinbuchstaben sind. Aber wenn Sie die Bestellung ändern:

 $result = array_merge(
    array_change_key_case($arr2, CASE_LOWER),
    array_change_key_case($arr1, CASE_LOWER)
);

Ausgabe:

 Array
(
    [name] => Alice
)

Hinweis: Die abgedeckten Werte sind unterschiedlich!

Dies zeigt, dass bei der Verwendung von Array_merge () und array_change_key_case () die Verarbeitungsreihenfolge direkt das Ergebnis beeinflusst.

Beispiel 2: Unkonvertierter Fall verursacht zunächst die Duplikation von Schlüssel

 $arr1 = ['Name' => 'Alice'];
$arr2 = ['name' => 'Bob'];

$result = array_change_key_case(
    array_merge($arr1, $arr2), CASE_LOWER
);

print_r($result);

Ausgabe:

 Array
(
    [name] => Bob
)

In diesem Beispiel betrachtet Array_Merge () den Namen und den Namen als zwei verschiedene Schlüssel während des Zusammenführens und wird erst nach dem Zusammenführen zu Kleinbuchstaben, so dass letzterer Bob beibehalten wird, das heißt: "Es scheint wiederholt zu sein, aber tatsächlich existieren beide Schlüssel beim Zusammenführen."

Und Ihre ursprüngliche Absicht ist es, sich auf der Grundlage eines bestimmten Schlüssels zu verschmelzen, und dieses Schreiben kann zu unerwartetem Verhalten führen.

Vorgeschlagene Verwendung und Lösung

Um diese Fallstricke zu vermeiden, wird empfohlen, die folgenden Regeln bei der Verwendung dieser beiden Funktionen zu befolgen:

  1. Vereinigen Sie zunächst den oberen und unteren Fall der Schlüsselnamen und fusionieren Sie dann:

     $result = array_merge(
        array_change_key_case($arr1, CASE_LOWER),
        array_change_key_case($arr2, CASE_LOWER)
    );
    
  2. Stellen Sie sicher, dass der Fall von Schlüssel in der Datenquelle konsistent ist: Es ist am besten, die Fallstandards während der Datenerzeugung oder Quellphase zu vereinen.

  3. Erwägen Sie, Array_Replace () anstelle von Array_merge () zu verwenden: In einigen Szenarien steht Array_Replace () eher der Logik von "Taste Override" überein.

     $result = array_replace(
        array_change_key_case($arr1, CASE_LOWER),
        array_change_key_case($arr2, CASE_LOWER)
    );
    

Zusammenfassung

  • array_merge () ist fälschlichempfindlich ;

  • Array_Change_key_Case () wird verwendet, um den oberen und unteren Fall von Schlüsselnamen zu vereinen .

  • Wenn die beiden in Kombination verwendet werden, wirkt sich die Reihenfolge der Sequenz und der ursprüngliche Fall der Schlüssel auf das Endergebnis aus.

  • Denken Sie in der tatsächlichen Entwicklung daran, die Fallumwandlung vor der Verschmelzung durchzuführen, um einen "versehentlichen Verlust" von Daten zu vermeiden.

Diese Art von Fallstrick ist besonders anfällig für Anwendungsszenarien der Multi - System- oder Multi-Source-Daten, wie z. Wenn Sie den Fall nicht im Voraus bearbeiten, können Sie die Schlüsselfelder "überschreiben", ohne es zu wissen.

Ich hoffe, dieser Artikel kann Ihnen helfen, Fallstricke zu vermeiden!