当前位置: 首页> 最新文章列表> 当传入空数组时 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() 的行为依然会根据实际比较的数组返回结果。