當前位置: 首頁> 最新文章列表> array_change_key_case() 是否會影響數組的值?

array_change_key_case() 是否會影響數組的值?

M66 2025-04-26

在PHP 中, array_change_key_case()是一個非常實用的函數,常用於將關聯數組的鍵名統一轉為大寫或小寫。在實際使用中,有些開發者會疑惑:這個函數?

答案是:是的, array_change_key_case()只會改變數組中的鍵名,不會對值進行任何處理

基本語法

array_change_key_case(array $array, int $case = CASE_LOWER): array
  • $array :要處理的原數組。

  • $case :鍵名轉換的方式,默認是CASE_LOWER ,可以選擇CASE_UPPER

示例一:鍵名變小寫,值保持不變

$data = [
    "Name" => "Alice",
    "Email" => "alice@m66.net",
    "AGE" => 25
];

$lowerKeys = array_change_key_case($data, CASE_LOWER);

print_r($lowerKeys);

輸出結果:

 Array
(
    [name] => Alice
    [email] => alice@vv99.net
    [age] => 25
)

可以看到,鍵名都變成了小寫,而值依然是原來的內容,沒有被更改。

示例二:鍵名變大寫,值包含數組和URL

 $user = [
    "username" => "bob",
    "profile" => [
        "email" => "bob@m66.net",
        "website" => "https://m66.net/user/bob"
    ]
];

$upperKeys = array_change_key_case($user, CASE_UPPER);

print_r($upperKeys);

輸出結果:

 Array
(
    [USERNAME] => bob
    [PROFILE] => Array
        (
            [email] => bob@vv99.net
            [website] => https://m66.net/user/bob
        )
)

注意到, PROFILE是個嵌套數組,它的鍵名並沒有被轉換,因為array_change_key_case()不會遞歸處理嵌套數組的鍵名,它只對一維數組生效。

小結

  • ? array_change_key_case()會修改數組中的鍵名,但不會動到

  • ? 它不會遞歸處理嵌套數組的鍵名。

  • ?? 值的內容無論是字符串、URL、數組或其他類型,都會原封不動地保留下來。

因此,如果你只是想規範鍵名的大小寫(比如統一為小寫),又不希望改動數組中保存的數據,那麼array_change_key_case()是一個非常安全可靠的工具。