W3docs

array_change_key_case()

Scopri come usare array_change_key_case() in PHP per convertire le chiavi di un array in minuscolo o maiuscolo.

Funzione PHP array_change_key_case()

array_change_key_case() restituisce una copia di un array con tutte le chiavi string convertite in minuscolo o maiuscolo. È particolarmente utile per normalizzare le chiavi provenienti da sorgenti imprevedibili — intestazioni HTTP, titoli di colonne CSV, righe di database o input dell'utente — in modo che il resto del codice possa accedervi con una singola notazione conosciuta.

Questa pagina illustra la sintassi, i parametri, il valore restituito, le insidie legate alle chiavi numeriche e alle collisioni di chiavi, oltre ad alcuni esempi pratici.

Sintassi

array_change_key_case(array $array, int $case = CASE_LOWER): array
ParametroDescrizione
$arrayL'array di input. Non viene modificato — viene restituito un nuovo array.
$caseUna delle costanti CASE_LOWER (valore predefinito) o CASE_UPPER.

La funzione restituisce un nuovo array con le chiavi convertite nel caso specificato; l'array originale rimane invariato. Solo le chiavi string sono interessate — le chiavi intere vengono restituite senza modifiche (vedi Le chiavi numeriche vengono ignorate qui sotto).

Esempio di base: chiavi in maiuscolo

php— editable, runs on the server

Output:

Array
(
    [FIRST_NAME] => John
    [LAST_NAME] => Doe
)

Le chiavi sono ora in maiuscolo, mentre i valori (John, Doe) rimangono invariati.

Comportamento predefinito: conversione in minuscolo

Quando si omette l'argomento $case, il valore predefinito è CASE_LOWER, quindi le chiavi diventano minuscole. Questo è l'uso più comune — normalizzare l'input con maiuscole miste prima di leggerlo:

<?php

$headers = array("Content-Type" => "text/html", "X-Powered-By" => "PHP");

// No second argument → CASE_LOWER
$normalized = array_change_key_case($headers);

echo $normalized["content-type"]; // text/html

Output:

text/html

In questo modo si può sempre leggere $normalized["content-type"] indipendentemente dalla notazione originale dell'intestazione.

Le chiavi numeriche vengono ignorate

array_change_key_case() agisce solo sulle chiavi string. Le chiavi intere passano inalterate, quindi un array indicizzato viene restituito esattamente come è stato fornito:

<?php

$mixed = array("Name" => "Ada", 0 => "zero", "Age" => 36);
print_r(array_change_key_case($mixed, CASE_UPPER));

Output:

Array
(
    [NAME] => Ada
    [0] => zero
    [AGE] => 36
)

Attenzione alle collisioni di chiavi

Poiché le chiavi di un array PHP devono essere univoche, la conversione può far collidere due chiavi distinte. In quel caso, vince il valore successivo e la voce precedente viene eliminata silenziosamente:

<?php

$array = array("Name" => "Ada", "name" => "Grace");
print_r(array_change_key_case($array, CASE_LOWER));

Output:

Array
(
    [name] => Grace
)

Sia "Name" che "name" diventano "name", quindi sopravvive solo l'ultima assegnazione (Grace). Se è importante preservare ogni voce, verificare la presenza di duplicati senza distinzione tra maiuscole e minuscole prima di chiamare questa funzione.

Viene modificato solo il livello superiore

Questa funzione non è ricorsiva — le chiavi degli array annidati vengono lasciate invariate. Per modificare le chiavi a livelli più profondi della struttura è necessario scorrere l'array manualmente:

<?php

function changeKeyCaseRecursive(array $array, int $case = CASE_LOWER): array
{
    $result = array_change_key_case($array, $case);
    foreach ($result as $key => $value) {
        if (is_array($value)) {
            $result[$key] = changeKeyCaseRecursive($value, $case);
        }
    }
    return $result;
}

$data = array("User" => array("First" => "Ada"));
print_r(changeKeyCaseRecursive($data, CASE_UPPER));

Output:

Array
(
    [USER] => Array
        (
            [FIRST] => Ada
        )

)

Casi d'uso comuni

  • Normalizzare le intestazioni HTTP o i parametri di query in modo che le ricerche non dipendano dalla notazione usata dal mittente.
  • Pulire le intestazioni di colonne CSV o fogli di calcolo prima di mappare le righe al proprio modello.
  • Rendere coerenti le chiavi di configurazione o di database in codice scritto da persone diverse.

Funzioni correlate

Practice

Pratica
Cosa fa la funzione PHP array_change_key_case?
Cosa fa la funzione PHP array_change_key_case?
Was this page helpful?