PHP array_intersect_key 函数
最后修改于 2025 年 3 月 13 日
PHP 的 array_intersect_key 函数使用键进行比较来计算数组的交集。它返回一个数组,其中包含第一个数组中所有键存在于所有参数中的条目。
基本定义
array_intersect_key 函数比较数组键,并从第一个数组返回匹配的键值对。它保留了原始的键值关联。
语法:array_intersect_key(array $array1, array ...$arrays): array。该函数接受多个数组,但仅比较键,不比较值。
array_intersect_key 基础示例
这演示了基于键的两个数组之间的简单交集。
basic_array_intersect_key.php
<?php $array1 = ['a' => 1, 'b' => 2, 'c' => 3]; $array2 = ['b' => 4, 'c' => 5, 'd' => 6]; $result = array_intersect_key($array1, $array2); print_r($result);
该函数返回 $array1 中键存在于 $array2 中的元素。请注意,保留的是 $array1 的值,而不是 $array2 的值。
多个数组交集
此示例显示了基于键的三个数组之间的交集。
multiple_array_intersect.php
<?php $array1 = ['red' => '#FF0000', 'green' => '#00FF00', 'blue' => '#0000FF']; $array2 = ['red' => 'Rouge', 'blue' => 'Bleu', 'yellow' => 'Jaune']; $array3 = ['red' => '赤', 'blue' => '青', 'black' => '黒']; $result = array_intersect_key($array1, $array2, $array3); print_r($result);
仅返回所有三个数组中都存在的键('red' 和 'blue')。这些值来自参数列表中的第一个数组($array1)。
数字键交集
此示例演示了使用数字数组键的交集。
numeric_key_intersect.php
<?php $array1 = [10 => 'A', 20 => 'B', 30 => 'C']; $array2 = [20 => 'X', 30 => 'Y', 40 => 'Z']; $result = array_intersect_key($array1, $array2); print_r($result);
该函数与数字键和字符串键的工作方式相同。只有键为 20 和 30 的元素才会同时出现在两个数组中。
保留第一个数组的值
此示例重点说明值始终来自第一个数组。
value_preservation.php
<?php $userData = ['name' => 'Alice', 'age' => 25, 'email' => 'alice@example.com']; $allowedFields = ['name' => true, 'email' => true]; $filteredData = array_intersect_key($userData, $allowedFields); print_r($filteredData);
这是过滤数据的常见用例。仅保留 $allowedFields 中列出的字段,并保留来自 $userData 的值。
空结果示例
这显示了当数组之间没有匹配的键时会发生什么。
no_intersection.php
<?php $weekdays = ['Mon' => 'Monday', 'Tue' => 'Tuesday']; $weekend = ['Sat' => 'Saturday', 'Sun' => 'Sunday']; $result = array_intersect_key($weekdays, $weekend); print_r($result);
当数组之间没有匹配的键时,将返回一个空数组。这对于需要验证不存在重叠的情况很有用。
最佳实践
- 键一致性:确保一致的键类型以获得可靠的结果。
- 顺序很重要:请记住,值来自第一个数组。
- 性能:对于大型数组,请首先考虑键提取。
- 可读性:记录哪个数组提供值。
来源
本教程通过实际示例介绍了 PHP 的 array_intersect_key 函数,展示了它在数组键交集场景中的用法。
作者
列出 所有 PHP 数组函数。