yii2 Class yii\helpers\ArrayHelper
yii2 2017-11-26 22:09:05

 参考链接:http://www.yiichina.com/doc/guide/2.0/helper-array

 

重新抽取数组

demo1:

QQ截图20171127225028.jpg

抽取children中的id和name组成一个新数组:

PHP Code复制内容到剪贴板
  1. ArrayHelper::map($item['children'], 'id''title')  

 

结果:

QQ截图20171127225134.jpg

 

 

二、获取指定的键名

WX20180219-225210@2x.png

PHP Code复制内容到剪贴板
  1. ArrayHelper::getColumn($array'id')  

 

WX20180219-225417@2x.png

 

数组,可以新加健值对

 原数组:

1.png

PHP Code复制内容到剪贴板
  1. //根据ID循环其副表的列表  
  2. $items = CarouselItem::find()->select('caption, image')  
  3.     ->where(['carousel_id' => $nav->id, 'status' => 1])  
  4.     ->orderBy(['sort' => SORT_ASC])  
  5.     ->limit($limit)  
  6.     ->asArray()->all();  
  7.   
  8. //根据items 循环,多加一个url健值对  
  9. return array_map(function ($value) {  
  10.     $value['url'] = Util::parseUrl($value['image']);  
  11.     return $value;  
  12. }, $items);  

 

2.png

例:

原始数据:

30ACFE5127F7D839AC788177439976EC.jpg

需要重组的数组结果:

WX20200316-202533@2x.png 

 

两种方案:

第一种,打印时间0.0180664

PHP Code复制内容到剪贴板
  1. $resData = [];  
  2. foreach ($data as $k => $item){  
  3.     if(is_array($item["value"])){  
  4.         foreach ($item["value"as $kk => $rr){  
  5.             $resData[$item["key"]][$rr["key"]] = $rr["value"];  
  6.         }  
  7.     }else{  
  8.         $resData[$item["key"]] = $item["value"];  
  9.     }  
  10. }  

 

第二种,打印时间0.023193359

PHP Code复制内容到剪贴板
  1. $resData = [];  
  2. array_map(function ($itemuse (&$resData) {  
  3.     if(is_array($item["value"])){  
  4.         // 检查单内容字段是checkLists,列表是数组,遍历查询其下面urls字段  
  5.         array_map(function ($rruse (&$resData,$item) {  
  6.             $resData[$item["key"]][$rr["key"]] = $rr["value"];  
  7.         },$item["value"]);  
  8.     }else{  
  9.         $resData[$item["key"]] = $item["value"];  
  10.     }  
  11. }, $data);  

 

 

 

 

 

 

 

 

本文来自于:http://www.yoyo88.cn/study/yii2/232.html

Powered by yoyo苏ICP备15045725号