_rest_array_intersect_key_recursive()
云策文档标注
概述
_rest_array_intersect_key_recursive() 是一个 WordPress 内部函数,用于递归计算数组的键交集。它基于键比较,返回一个包含所有参数中均存在的键的关联数组。
关键要点
- 函数递归地比较数组键,仅保留在所有输入数组中均存在的键及其对应值。
- 参数 $array1 是主数组,$array2 是用于比较键的数组,两者均为必需。
- 返回值是一个关联数组,包含 $array1 中那些键在所有参数中都存在的条目。
- 该函数在 WordPress 5.3.0 版本中引入,主要用于 REST API 相关功能。
代码示例
function _rest_array_intersect_key_recursive( $array1, $array2 ) {
$array1 = array_intersect_key( $array1, $array2 );
foreach ( $array1 as $key => $value ) {
if ( is_array( $value ) && is_array( $array2[ $key ] ) ) {
$array1[ $key ] = _rest_array_intersect_key_recursive( $value, $array2[ $key ] );
}
}
return $array1;
}注意事项
- 该函数是内部函数,通常不建议在插件或主题中直接使用,除非有特定需求。
- 它主要用于支持 rest_filter_response_fields() 等 REST API 函数,以过滤响应字段。
- 函数递归处理嵌套数组,确保深层键的交集也被正确计算。
原文内容
Recursively computes the intersection of arrays using keys for comparison.
Parameters
$array1arrayrequired-
The array with master keys to check.
$array2arrayrequired-
An array to compare keys against.
Source
function _rest_array_intersect_key_recursive( $array1, $array2 ) {
$array1 = array_intersect_key( $array1, $array2 );
foreach ( $array1 as $key => $value ) {
if ( is_array( $value ) && is_array( $array2[ $key ] ) ) {
$array1[ $key ] = _rest_array_intersect_key_recursive( $value, $array2[ $key ] );
}
}
return $array1;
}
Changelog
| Version | Description |
|---|---|
| 5.3.0 | Introduced. |