abei1982 2017-01-29 22:58:38 3906次浏览 1条回复 4 0 0

\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值,但是该数组值仍然被站位。

原文链接 http://www.maomaonv.com/question-view.html?id=4

您需要登录后才可以回复。登录 | 立即注册