ZetCode

PHP array_diff_key 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_diff_key 函数用于比较数组键并返回差异。它在查找某个数组中有而其他数组中没有的键时非常有用。

基本定义

array_diff_key 函数比较多个数组的键。它返回第一个数组中所有键不存在于其他任何数组中的条目。

语法:array_diff_key(array $array1, array ...$arrays): array。比较仅基于键,不基于值。键类型必须匹配。

基本 array_diff_key 示例

这显示了两个具有不同键的数组之间的简单比较。

basic_array_diff_key.php
<?php

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

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

print_r($result);

输出:Array ( [b] => 2 [c] => 3 )。该函数返回 $array1 中键('b' 和 'c')在 $array2 中不存在的元素。

比较多个数组

您可以一次将第一个数组与多个其他数组进行比较。

multiple_arrays.php
<?php

$array1 = ['red' => '#FF0000', 'green' => '#00FF00', 'blue' => '#0000FF'];
$array2 = ['red' => '#FF0000', 'yellow' => '#FFFF00'];
$array3 = ['green' => '#00FF00', 'cyan' => '#00FFFF'];

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

print_r($result);

输出:Array ( [blue] => #0000FF )。只有 'blue' 键存在于 $array1 中,而不在 $array2 或 $array3 中。值无关紧要。

数值键比较

该函数与字符串键一样,也适用于数值键。

numeric_keys.php
<?php

$array1 = [10 => 'A', 20 => 'B', 30 => 'C'];
$array2 = [10 => 'X', 40 => 'Y'];

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

print_r($result);

输出:Array ( [20] => B [30] => C )。来自 $array1 的键 20 和 30 不存在于 $array2 中,因此返回它们的元素。

混合键类型

该函数区分不同的键类型(字符串与整数)。

mixed_key_types.php
<?php

$array1 = ['10' => 'String key', 10 => 'Integer key', '20' => 'Twenty'];
$array2 = [10 => 'Integer value'];

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

print_r($result);

输出:Array ( [10] => String key [20] => Twenty )。字符串键 '10' 与整数键 10 不同,因此它被包含在内。

空数组行为

当与空数组进行比较时,将返回第一个数组中的所有键。

empty_array.php
<?php

$array1 = ['a' => 1, 'b' => 2];
$array2 = [];

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

print_r($result);

输出:Array ( [a] => 1 [b] => 2 )。由于 $array2 没有键,因此 $array1 中的所有键都被视为不同并被返回。

最佳实践

来源

PHP array_diff_key 文档

本教程涵盖了 PHP 的 array_diff_key 函数,并通过实际示例展示了其在数组键比较场景中的用法。

作者

我叫 Jan Bodnar,是一名热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 数组函数