abei1982 2017-01-31 11:06:09 5777次浏览 7条回复 6 3 0

ArrayHelper::map( $array, $from, $to, $group = null )

map我想大家都使用过,出境频率非常高。

比如下面的场景,有一个博客分类表category.

idname
1张三
2李四

我们现在想把这个分类表放到下拉框里,id作为key,name作为值。 于是我们在视图里写了这样的代码

<?= \yii\helpers\Html::dropDownList('cat_id',null,ArrayHelper::map(Category::find()->all(),'id','name'));?>

这样就可以了,在浏览器上你会看到

<select name="name">
	<option value="1">张三</option>
	<option value="2">李四</option>
</select>

诸如此类的:我们可以通过map方法将一个结果集或多维数组每项的2个字段抽取出来,一个作为key、一个作为value,重新组成一个数组作为结果返回。

到这里map已经很方便,好吧,我们再来说说第三个函数$group,这是一个可选参数,它能实现类似于sql的group by分组功能。

看例子~~~~,这是一个小组的成员表person。

idrealnamesex
1张三boy
2李四boy
3王五boy
4小三gril

我们想做这样一件事情,首先按照性别分组,每组里分别是一个人的姓名信息,通过map能轻易实现。

<?= ArrayHelper::map($persons,'id','realname','sex');

于是你看到了这样的结果

[
	'boy'=>[1=>'张三'2=>'李四',3=>'小五'],
	'girl'=>[4=>'小三'],
]

这就是map函数。

北哥会把最新文章和视频信息发朋友圈,可以扫码加我微信。

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