yii2 Class yii\helpers\ArrayHelper
参考链接:http://www.yiichina.com/doc/guide/2.0/helper-array
重新抽取数组
demo1:
抽取children中的id和name组成一个新数组:
PHP Code复制内容到剪贴板
- ArrayHelper::map($item['children'], 'id', 'title')
结果:
二、获取指定的键名
PHP Code复制内容到剪贴板
- ArrayHelper::getColumn($array, 'id')
数组,可以新加健值对
原数组:
PHP Code复制内容到剪贴板
- //根据ID循环其副表的列表
- $items = CarouselItem::find()->select('caption, image')
- ->where(['carousel_id' => $nav->id, 'status' => 1])
- ->orderBy(['sort' => SORT_ASC])
- ->limit($limit)
- ->asArray()->all();
- //根据items 循环,多加一个url健值对
- return array_map(function ($value) {
- $value['url'] = Util::parseUrl($value['image']);
- return $value;
- }, $items);
例:
原始数据:
需要重组的数组结果:
两种方案:
第一种,打印时间0.0180664
PHP Code复制内容到剪贴板
- $resData = [];
- foreach ($data as $k => $item){
- if(is_array($item["value"])){
- foreach ($item["value"] as $kk => $rr){
- $resData[$item["key"]][$rr["key"]] = $rr["value"];
- }
- }else{
- $resData[$item["key"]] = $item["value"];
- }
- }
第二种,打印时间0.023193359
PHP Code复制内容到剪贴板
- $resData = [];
- array_map(function ($item) use (&$resData) {
- if(is_array($item["value"])){
- // 检查单内容字段是checkLists,列表是数组,遍历查询其下面urls字段
- array_map(function ($rr) use (&$resData,$item) {
- $resData[$item["key"]][$rr["key"]] = $rr["value"];
- },$item["value"]);
- }else{
- $resData[$item["key"]] = $item["value"];
- }
- }, $data);