php对结果集数组字段进行过滤的方法
给接口方返回数据的时候,经常被要求只返回需要的字段,于是自己写了两个方法分别用于过滤获取结果集中的不需要的字段,使用的过程中需要先定义一个过滤的key数组,然后调用对应的方法处理即可。
过滤单个结果集:
function filterResult(array &$result, array &$filter_key) { if (!$result) { return false; } $result = array_intersect_key($result, $filter_key); foreach ($filter_key as $key => $value) { if (is_array($value) && $value && !empty($result[$key])) { if (count($result[$key]) != count($result[$key], 1)) { if (is_numeric(key($value))) { $result[$key] = array_column($result[$key], reset($value)); } else { foreach ($result[$key] as &$_value) { $_value = array_intersect_key($_value, $value); } } } else { $result[$key] = array_intersect_key($result[$key], $value); } } } }
过滤结果集数组:
function filterResultList(array &$result_list, array &$filter_key) { if (!$result_list) { return false; } foreach ($result_list as $key => &$result) { filterResult($result, $filter_key); } }
PHP之友评论