[Yii2小心肝儿]ArrayHelper之getColumn方法详解 [ 技术分享 ]
\yii\helpers\ArrayHelper::getColumn ( $array, $name, $keepKeys = true )
这是一个非常有用的方法,它将一个二维数组或对象集合根据某列返回结果数组。
案例1:我们想获取一个二维数组所有key=name的值,并数组类型返回。
$arr = [
0=>['id'=>1,'name'=>'abei'],
1=>['id'=>2,'name'=>'beige'],
3=>['id'=>3,'name'=>'liuhuan']
];
var_dump(\yii\helpers\ArrayHelper::getColumn($arr,'name'));
// 返回 ['abei','beige','liuhuan']
案例2:我们想得到一个二维数组中所有key=name的值,并且将这些值都在末尾加上#号。将第二个参数做成自定义函数回调即可。
$arr = [
0=>['id'=>1,'name'=>'abei'],
1=>['id'=>2,'name'=>'beige'],
3=>['id'=>3,'name'=>'liuhuan']
];
var_dump(\yii\helpers\ArrayHelper::getColumn($arr,function($element){
return $element['name'].'#';
}));
// 返回['abei#','beige#','liuhuan#']
案例3:我们从数据库获取所有的会员,并且将会员的用户名ID放到一个数组里。
$users = User::find()->all();
var_dump(\yii\helpers\ArrayHelper::getColumn($users,'id'));
// 返回[1,2,3,4,xxxxx]
对于此函数的使用,要注意以下几点:
- 第三个参数$keepKeys的使用,默认为真,如果设置为假,则结果数组不会保留原有索引,而是从0开始重新索引(即便之前非数字索引)
- 该函数会遍历原数组,所以当我们对$name指定错误或未能匹配到,将返回null值,但是该数组值仍然被站位。
abei1982 河南洛阳
注册时间:2015-05-16
最后登录:2020-04-14
在线时长:128小时48分
最后登录:2020-04-14
在线时长:128小时48分
- 粉丝307
- 金钱4935
- 威望50
- 积分6715