函数文档

_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.

Return

array An associative array containing all the entries of array1 which have keys that are present in all arguments.

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.