當前位置: 首頁> 最新文章列表> array_intersect_key 和array_diff_key 有啥不同?一文看懂兩者區別

array_intersect_key 和array_diff_key 有啥不同?一文看懂兩者區別

gitbox 2025-06-09

在PHP 中, array_intersect_keyarray_diff_key都是數組處理函數,用來比較數組的鍵名,但它們的行為和用途有所不同。在這篇文章中,我們將詳細討論它們的差異,並通過實際示例幫助你更好地理解這兩個函數的使用場景。

1. array_intersect_key函數介紹

array_intersect_key函數用來返回多個數組中,所有數組中都有的鍵名和對應的值。也就是說,它會返回一個新數組,其中包含所有鍵名在多個數組中都存在的元素。

函數原型

array array_intersect_key(array $array1, array $array2, array ...$arrays)
  • $array1 :第一個要比較的數組。

  • $array2 :第二個要比較的數組。

  • $arrays :可以選擇多個數組進行比較。

示例代碼

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

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

輸出結果

Array
(
    [b] => 2
    [c] => 3
)

在這個例子中, array_intersect_key返回了$array1$array2中都存在的鍵名bc對應的值。因此,返回的結果包含了這兩個鍵名的值。

2. array_diff_key函數介紹

array_diff_key函數用來返回一個數組,該數組包含在第一個數組中,但不在其他數組中的鍵值對。它的作用是從第一個數組中移除那些在其他數組中也存在的鍵。

函數原型

array array_diff_key(array $array1, array $array2, array ...$arrays)
  • $array1 :第一個數組,將與其他數組進行比較。

  • $array2 :第二個要比較的數組。

  • $arrays :可以選擇多個數組進行比較。

示例代碼

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

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

輸出結果

Array
(
    [a] => 1
)

在這個例子中, array_diff_key返回了$array1中鍵名為a的元素,因為這個鍵在$array2中不存在。

3. 主要區別

array_intersect_keyarray_diff_key的主要區別在於:

  • array_intersect_key返回的是在所有數組中都存在的鍵值對。

  • array_diff_key返回的是在第一個數組中存在,但不在其他數組中的鍵值對。

例如

假設你有三個數組:

 $array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 4, 'c' => 5, 'd' => 6];
$array3 = ['c' => 7, 'd' => 8];
  • array_intersect_key($array1, $array2, $array3)將返回['c' => 3] ,因為c是所有數組中都有的鍵。

  • array_diff_key($array1, $array2, $array3)將返回['a' => 1, 'b' => 2] ,因為ab僅存在於$array1中,而不在$array2$array3中。

4. 總結

  • array_intersect_key用於找到多個數組中都有的鍵,並返回這些鍵及其對應的值。

  • array_diff_key用於找到在第一個數組中有,但在後續數組中沒有的鍵,並返回這些鍵及其對應的值。

這兩個函數在數組操作中非常有用,特別是在需要基於鍵名進行比較和篩選的場景中。理解它們的區別,可以幫助你更加高效地處理PHP 數組。