當前位置: 首頁> 最新文章列表> 如何通過比較函數實現忽略大小寫的鍵比較

如何通過比較函數實現忽略大小寫的鍵比較

M66 2025-06-06

在PHP 中, array_diff_uassoc函數用於比較兩個數組,返回第一個數組中所有與第二個數組的鍵值對不相同的部分。這個函數的主要特點是它允許我們提供一個自定義的比較函數,用於比較數組的鍵。通過結合自定義的比較函數,我們可以實現忽略大小寫的鍵比較。

本文將介紹如何使用array_diff_uassoc函數實現忽略大小寫的鍵比較。

1. array_diff_uassoc函數簡介

array_diff_uassoc函數的語法如下:

 array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
  • $array1$array2 :要比較的兩個數組。

  • $key_compare_func :自定義的鍵比較函數,用於比較兩個數組鍵。

該函數返回一個數組,其中包含$array1中存在但在$array2中不存在的鍵值對。

2. 忽略大小寫的鍵比較

為了實現忽略大小寫的鍵比較,我們需要編寫一個自定義的比較函數,該函數將鍵轉換為統一的小寫或大寫,然後進行比較。以下是實現的代碼示例:

 <?php

// 自定義鍵比較函數:忽略大小寫
function case_insensitive_key_compare($key1, $key2) {
    return strcasecmp($key1, $key2);
}

// 定義兩個數組
$array1 = [
    "first" => "apple",
    "second" => "banana",
    "Third" => "cherry"
];

$array2 = [
    "FIRST" => "apple",
    "second" => "grape",
    "third" => "kiwi"
];

// 使用 array_diff_uassoc 比較兩個數組,忽略大小寫
$result = array_diff_uassoc($array1, $array2, 'case_insensitive_key_compare');

// 輸出結果
print_r($result);

?>

3. 代碼解析

  • 自定義比較函數case_insensitive_key_compare使用了PHP 內建的strcasecmp函數,它比較兩個字符串並忽略大小寫。如果兩個字符串相等, strcasecmp會返回0 ,否則返回非零值。

  • 數組定義$array1$array2是我們要比較的兩個數組。注意,它們的鍵名在大小寫上有所不同。

  • 調用array_diff_uassoc :我們將case_insensitive_key_compare作為自定義的比較函數傳入array_diff_uassoc ,從而實現忽略大小寫的鍵比較。

  • 輸出結果:最終, $result數組包含了$array1中那些鍵值與$array2鍵值不匹配的項。

4. 輸出結果

當運行上述代碼時,輸出結果將如下:

 Array
(
    [third] => cherry
)

在這個例子中,儘管$array1中的鍵是"Third" ,而$array2中的鍵是"third" ,由於我們使用了忽略大小寫的比較方式,它們被認為是相同的,因此"third" => "cherry"被保留在結果數組中。