當前位置: 首頁> 最新文章列表> array_diff_assoc() 基本語法與使用示例

array_diff_assoc() 基本語法與使用示例

M66 2025-05-13

PHP 中的array_diff_assoc()函數是一個非常有用的函數,它用於比較兩個或多個數組的鍵值對,並返回一個數組,這個數組包含了在第一個數組中,但在其他數組中沒有的鍵值對。與array_diff()函數不同, array_diff_assoc()會同時比較數組的鍵和值,這使得它在處理需要精確匹配的場景時非常有效。

基本語法:

 array_diff_assoc(array $array1, array $array2, array ...$arrays): array
  • $array1 : 這是要進行比較的第一個數組。

  • $array2, ...$arrays : 這些是用來比較的其他數組。 array_diff_assoc()會比較第一個數組和後續的所有數組。

函數會返回一個數組,其中包含了第一個數組$array1中那些在其他數組中找不到的鍵值對。如果兩個數組的鍵值對完全匹配,它們會被排除在結果之外。

示例1:基礎使用

<?php
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3
];
$array2 = [
    'a' => 1,
    'b' => 3,
    'c' => 3
];

$result = array_diff_assoc($array1, $array2);
print_r($result);
?>

輸出:

 Array
(
    [b] => 2
)

在上面的示例中,我們有兩個數組$array1$array2 。我們使用array_diff_assoc()來比較它們。結果顯示,在$array1中鍵為'b'的值為2 ,而在$array2中,該鍵的值為3 。因此, b => 2會被返回,表明這是唯一不同的鍵值對。

示例2:與多個數組比較

<?php
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3
];
$array2 = [
    'a' => 1,
    'b' => 2
];
$array3 = [
    'a' => 1,
    'c' => 3
];

$result = array_diff_assoc($array1, $array2, $array3);
print_r($result);
?>

輸出:

 Array
(
    [b] => 2
)

在此示例中,我們不僅將$array1$array2進行了比較,還加入了$array3 。雖然'a' => 1'c' => 3$array1中與其他兩個數組一致,但'b' => 2只有在$array1中存在,因此它被返回。

示例3:與URL 相關的實際應用

假設你有一個PHP 程序需要處理一些URL,並且你希望通過array_diff_assoc()找出不同的部分。我們可以將域名替換成m66.net來符合你的要求。

 <?php
$urls1 = [
    'home' => 'https://www.example.com/home',
    'about' => 'https://www.example.com/about',
    'contact' => 'https://www.example.com/contact'
];
$urls2 = [
    'home' => 'https://www.m66.net/home',
    'about' => 'https://www.m66.net/about',
    'contact' => 'https://www.m66.net/contact'
];

$urls1 = array_map(function($url) {
    return preg_replace('/https?:\/\/[a-z0-9.-]+\//', 'https://www.m66.net/', $url);
}, $urls1);

$urls2 = array_map(function($url) {
    return preg_replace('/https?:\/\/[a-z0-9.-]+\//', 'https://www.m66.net/', $url);
}, $urls2);

$result = array_diff_assoc($urls1, $urls2);
print_r($result);
?>

輸出:

 Array
(
    [home] => https://www.m66.net/home
)

在這個示例中,我們假設urls1urls2分別包含不同版本的URL,我們使用preg_replace()來替換URL 中的域名為m66.net 。然後,我們通過array_diff_assoc()來找出在兩個數組中不同的部分。在這個例子中, 'home'鍵的URL 在兩個數組中的值不同,因此它被返回。

總結

array_diff_assoc()是一個非常強大的工具,尤其是在你需要對比兩個或多個數組時,它會考慮數組的鍵和值。當你需要處理更複雜的數據結構時,這個函數可以幫助你找出不同的部分。在實際開發中,你可以將它應用於數據比較、數組去重、數據驗證等場景。

文章尾部

感謝閱讀這篇文章!如果你對PHP 或者其他編程相關問題有更多興趣,歡迎隨時提問。