當前位置: 首頁> 最新文章列表> array_change_key_case() 對原數組有副作用嗎?

array_change_key_case() 對原數組有副作用嗎?

M66 2025-04-24

在PHP 中, array_change_key_case()是一個非常實用的函數,它的作用是將數組中所有鍵名的大小寫進行統一轉換,默認是轉換為小寫字母。這個函數常用於處理來自不同來源的數據時,確保鍵名格式的一致性。

那麼問題來了:使用array_change_key_case()會修改原數組嗎?

答案:不會修改原數組

array_change_key_case()是一個非破壞性函數,也就是說它不會直接修改傳入的原始數組,而是返回一個鍵名經過大小寫轉換之後的新數組。如果你希望保留修改後的結果,必須將其賦值給一個變量。

示例代碼

<?php
$original = [
    "Name" => "Alice",
    "AGE" => 25,
    "Email" => "alice@m66.net"
];

// 使用 array_change_key_case 不會修改原數組
$changed = array_change_key_case($original, CASE_LOWER);

print_r($original);
echo "--------\n";
print_r($changed);
?>

輸出結果:

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

可以看到, $original數組保持不變,而$changed是一個新數組,鍵名已經被轉換成了小寫。

參數說明

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

  • $case :可選,指定轉換類型:

    • CASE_LOWER (默認):轉換為小寫。

    • CASE_UPPER :轉換為大寫。

注意事項

  • 該函數僅作用於一維數組,不會遞歸處理多維數組的鍵名。

  • 如果轉換後的鍵名存在重複,會導致值被覆蓋。例如, ["a" => 1, "A" => 2]轉換為小寫後會變成["a" => 2]

總結

array_change_key_case()是PHP 中處理數組鍵名大小寫的便捷工具,它不會修改原數組,而是返回一個新的數組。記住:使用它時一定要接住返回值,否則轉換將毫無意義。

希望這篇文章能幫你更清楚地理解array_change_key_case()的用法和特性!