當前位置: 首頁> 最新文章列表> 使用array_diff_uassoc() 區分關聯數組中的差異

使用array_diff_uassoc() 區分關聯數組中的差異

M66 2025-06-06

在PHP中, array_diff_uassoc()是一個用於比較兩個關聯數組,並返回它們之間差異的函數。它不僅根據數組的鍵值來進行比較,還允許使用自定義的比較函數來判斷值是否相等。這個函數非常適用於處理多維數組或需要特殊比較邏輯的情況。

函數定義

array_diff_uassoc()的基本語法如下:

 array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
  • $array1 :第一個關聯數組。

  • $array2 :第二個關聯數組。

  • $key_compare_func :用於比較數組鍵的回調函數。這個函數接收兩個參數並返回一個整數值,表示它們的比較結果。

示例:基本用法

假設我們有兩個關聯數組,我們想找出它們之間的差異,具體來說,我們希望找出第一個數組中有而第二個數組中沒有的元素。

 <?php
$array1 = array(
    "a" => "apple",
    "b" => "banana",
    "c" => "cherry"
);

$array2 = array(
    "a" => "apple",
    "b" => "blueberry"
);

$result = array_diff_uassoc($array1, $array2, "key_compare");

print_r($result);

function key_compare($key1, $key2) {
    return strcmp($key1, $key2);
}
?>

代碼解析

  1. 我們定義了兩個關聯數組$array1$array2

  2. 使用array_diff_uassoc()函數,我們傳入了兩個數組以及一個比較函數key_compare

  3. key_compare函數使用strcmp()來比較鍵的字母順序。它的返回值決定了兩個鍵的相對順序:

    • 如果返回負數,表示$key1小於$key2

    • 如果返回零,表示$key1等於$key2

    • 如果返回正數,表示$key1大於$key2

  4. array_diff_uassoc()函數將返回$array1中的元素,這些元素在$array2中對應的鍵或值不同。

輸出結果

Array
(
    [c] => cherry
)

從上面的輸出可以看出, array_diff_uassoc()返回了$array1中的"c" => "cherry" ,因為這個元素在$array2中沒有找到對應的鍵"c"

使用自定義比較函數

array_diff_uassoc()允許你自定義比較函數,不僅僅局限於簡單的字符串或數字比較。比如,你可以根據特定的邏輯來比較鍵值對。例如,假設我們想要比較數組值的長度而不是字面值:

 <?php
$array1 = array(
    "a" => "apple",
    "b" => "banana",
    "c" => "cherry"
);

$array2 = array(
    "a" => "apple",
    "b" => "banana",
    "c" => "pear"
);

$result = array_diff_uassoc($array1, $array2, "length_compare");

print_r($result);

function length_compare($key1, $key2) {
    return strlen($key1) - strlen($key2);
}
?>

URL 示例

假設我們在處理一個包含URL的數組,並且需要使用array_diff_uassoc()來找出差異。下面是一個具體的例子,其中我們將域名替換為m66.net