PHP 实现数组去除或保留指定字段的通用函数详解
一、文章标题
《PHP 实现通用数组字段过滤函数:灵活去除或保留指定 Key》
二、摘要
在实际开发中,我们经常需要对数组进行字段级别的操作,例如从一个数组中删除某些敏感字段(如密码、token),或者只保留特定字段用于接口返回。本文将详细解析一个通用的 PHP 函数 —— arrayExcludeReserveKeys
,它支持根据传入参数灵活地 去除 或 保留 指定的字段,并支持处理单维数组和二维数组结构。
三、函数功能概述
该函数主要实现以下功能:
- 支持单层数组和多维数组的操作。
- 可选择性地 去除 或 保留 指定字段。
- 利用 PHP 内置函数
array_diff_key()
和array_intersect_key()
提高执行效率。 - 可扩展性强,适用于数据脱敏、接口响应裁剪等场景。
四、代码结构解析
1. 公共方法:arrayExcludeReserveKeys()
public function arrayExcludeReserveKeys($array, $fieldKeys = [], $isOperate = true)
参数说明:
参数名 | 类型 | 默认值 | 描述 |
---|---|---|---|
$array |
array | - | 待处理的原始数组 |
$fieldKeys |
array | [] | 需要处理的字段列表 |
$isOperate |
bool | true | 操作类型:true 表示去除字段;false 表示保留字段 |
方法逻辑:
- 如果是单层数组,直接调用私有方法
_arrayExcludeReserveKeys()
处理; - 如果是二维数组,则遍历每一项并递归调用处理;
- 返回处理后的结果数组。
2. 私有方法:_arrayExcludeReserveKeys()
private function _arrayExcludeReserveKeys($array, $fieldKeys = [], $isOperate = true)
核心实现:
- 去除字段:使用
array_diff_key()
+array_flip()
,排除指定字段; - 保留字段:使用
array_intersect_key()
+array_flip()
,仅保留指定字段。
示例:
$data = [