當前位置: 首頁> 最新文章列表> 當傳入空數組時array_diff_key() 會返回什麼?

當傳入空數組時array_diff_key() 會返回什麼?

M66 2025-06-06

在PHP 中, array_diff_key()函數是用於比較兩個或多個數組,返回第一個數組中與其它數組鍵不同的部分。它的使用形式如下:

 array_diff_key(array $array1, array $array2, array ...$arrays): array

該函數返回的結果是:第一個數組中所有鍵在其他數組中沒有出現的部分。也就是說,只有當某個鍵在其他數組中不存在時,它才會出現在結果中。

但如果傳入一個空數組,該函數的行為就會產生一些特別的現象。讓我們來探討一下,當傳入空數組時, array_diff_key()會有什麼樣的返回值。

示例代碼

$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = [];

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

執行結果

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

解釋

當第二個數組$array2是一個空數組時, array_diff_key()會直接返回第一個數組$array1的所有鍵值對。原因如下:

  1. array_diff_key()的原理是根據鍵的差異來返回數組。

  2. 如果第二個數組是空的,那麼它沒有任何鍵與第一個數組中的鍵進行比較。因此,所有第一個數組中的鍵都不會在第二個數組中找到。

  3. 因此, array_diff_key()將返回第一個數組的所有鍵值對,因為它們“與任何東西都不相同”。

從這個例子可以看出,如果第二個數組為空, array_diff_key()不會做任何比較,直接返回第一個數組。

其他情況

如果傳入多個數組,其中有空數組, array_diff_key()的行為依然是返回第一個數組中那些在其他數組中沒有的鍵。例如:

 $array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = [];
$array3 = ["a" => 100];

$result = array_diff_key($array1, $array2, $array3);
print_r($result);

執行結果:

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

在這個例子中,第一個數組$array1中的鍵"a" 在第三個數組$array3中存在,因此"a" 不會出現在返回結果中。而"b" 和"c" 則在$array3中沒有找到,所以它們會被保留下來。

總結

  • 當傳入空數組給array_diff_key()時,返回的將是第一個數組的所有元素。

  • 空數組沒有鍵與其他數組進行比較,因此會認為所有鍵都沒有在其它數組中出現。

  • 如果傳入多個數組,其中有空數組, array_diff_key()的行為依然會根據實際比較的數組返回結果。