Signatur
Beschreibung
array_change_key_case() wandelt alle String-Schlüssel eines Arrays entweder in Kleinbuchstaben (CASE_LOWER) oder in Großbuchstaben (CASE_UPPER) um. Numerische Schlüssel werden dabei nicht verändert.
Die Funktion ist besonders nützlich, wenn Daten aus unterschiedlichen Quellen zusammengeführt werden, die uneinheitliche Groß-/Kleinschreibung verwenden – etwa HTTP-Header, CSV-Importe oder externe API-Antworten. Durch die Normalisierung der Schlüssel lassen sich anschließende Zugriffe zuverlässig und ohne Fallunterscheidung durchführen.
Wichtig: Wenn nach der Umwandlung zwei oder mehr Schlüssel identisch sind (z. B. 'Name' und 'name'), überschreibt der letzte Eintrag alle vorherigen. Das ursprüngliche Array bleibt unverändert – die Funktion gibt immer ein neues Array zurück.
Bei mehrdimensionalen Arrays werden nur die Schlüssel der obersten Ebene transformiert. Für tiefere Ebenen muss die Funktion rekursiv angewendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $array Pflicht | array | Das Eingabe-Array, dessen Schlüssel umgewandelt werden sollen. | |
| $case | int | CASE_LOWER | Gibt die Ziel-Schreibweise an. Erlaubte Werte sind die Konstanten CASE_LOWER (Standard, Kleinbuchstaben) und CASE_UPPER (Großbuchstaben). |
Rückgabewert
Beispiele
Schlüssel in Kleinbuchstaben umwandeln (Standard)
<?php
$data = [
'Name' => 'Alice',
'EMAIL' => 'alice@example.com',
'AGE' => 30,
42 => 'numerischer Schlüssel',
];
$result = array_change_key_case($data, CASE_LOWER);
print_r($result);
Schlüssel in Großbuchstaben umwandeln
<?php
$headers = [
'content-type' => 'application/json',
'x-request-id' => 'abc-123',
'Authorization' => 'Bearer token',
];
$normalized = array_change_key_case($headers, CASE_UPPER);
print_r($normalized);
Kollision durch doppelte Schlüssel nach Umwandlung
<?php
$data = [
'id' => 1,
'ID' => 2,
'Id' => 3,
];
// Nach CASE_LOWER sind alle Schlüssel 'id' — nur der letzte Wert bleibt erhalten
$result = array_change_key_case($data, CASE_LOWER);
print_r($result);
Rekursive Anwendung auf mehrdimensionale Arrays
<?php
function array_change_key_case_recursive(array $arr, int $case = CASE_LOWER): array {
return array_map(
fn($value) => is_array($value) ? array_change_key_case_recursive($value, $case) : $value,
array_change_key_case($arr, $case)
);
}
$data = [
'User' => [
'Name' => 'Bob',
'EMAIL' => 'bob@example.com',
],
];
print_r(array_change_key_case_recursive($data));
// Wichtig · Fallstricke
Schlüssel-Kollisionen: Wenn nach der Umwandlung mehrere Schlüssel denselben Namen erhalten, überschreiben spätere Einträge frühere stillschweigend. Es gibt keine Warnung oder Fehlermeldung – das Verhalten sollte daher bei unkontrollierten Eingabedaten bewusst berücksichtigt werden.
Mehrbyte-Zeichen: array_change_key_case() verwendet intern strtolower()/strtoupper() und ist daher auf ASCII beschränkt. Umlaute (ä, ö, ü) oder andere Nicht-ASCII-Zeichen in Schlüsseln werden nicht korrekt umgewandelt. Für solche Fälle sollte mb_strtolower() mit einer eigenen rekursiven Funktion eingesetzt werden.