php通过array_filter返回数组中指定的key键的单元

以下为我自己写的例子,这个例子可以稍加修改写成一个函数,用于返回只保留指定下标的字段的数组
public function getInfoByModule ($module) {
    $application_array = DB::table($this->table)->where(‘domain’, ‘=’, $module)->get()->toArray();
    if (count($application_array) !== 0 ) {
        return array_filter($application_array[0], function($k) {
            $filter_key = [‘id’, ‘domain’, ‘app_id’, ‘environment’];
            return in_array($k, $filter_key);
        }, ARRAY_FILTER_USE_KEY );
    }
    return false;
}
以下为编写思路:

array_filter

(PHP 4 >= 4.0.6, PHP 5, PHP 7)
array_filter — 用回调函数过滤数组中的单元

说明 ¶

array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array
依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

参数
描述
array
必需。规定要过滤的数组。
callback
可选。规定要用的回调函数。
flag
可选。决定 callback 接收的参数形式:
ARRAY_FILTER_USE_KEY – callback 接受键名作为的唯一参数
ARRAY_FILTER_USE_BOTH – callback 同时接受键名和键值

参数 ¶

array
要循环的数组
callback
使用的回调函数
如果没有提供 callback 函数, 将删除 array 中所有等值为 FALSE 的条目。更多信息见转换为布尔值
flag
决定callback接收的参数形式:
  • ARRAY_FILTER_USE_KEY – callback接受键名作为的唯一参数
  • ARRAY_FILTER_USE_BOTH – callback同时接受键名和键值

<?php
$arr = [‘a’ => 1‘b’ => 2‘c’ => 3‘d’ => 4];
var_dump(array_filter($arr, function($k) {
    return $k == ‘b’;
}, ARRAY_FILTER_USE_KEY));
var_dump(array_filter($arr, function($v$k) {
    return $k == ‘b’ || $v == 4;
}, ARRAY_FILTER_USE_BOTH));
?>
以上例程会输出:
array(1) {
  [“b”]=>
  int(2)
}
array(2) {
  [“b”]=>
  int(2)
  [“d”]=>
  int(4)
}

注释 ¶

Caution
用户不应在回调函数中修改数组本身。例如增加/删除单元或者对 array_filter() 正在作用的数组进行 unset。如果数组改变了,此函数的行为将不可预测。
这里对上述例子进行了改造,通过in_array方法来判断是否要区的键,这样可以通过定义一个key键数组来达到获取指定某些字段的目的

发表评论

您的电子邮箱地址不会被公开。