数组操作工具
数据操作工具类主要存放,常用操作数组的方法,扩展think\helper\Arr的用法
内置方法
一、对数组增加默认值
public static function getDefaultValue(array $keys, array $configList = []);
使用场景
根据第一个参数,来设置第二个参数中没有存在的键值对
使用方式
use crmeb\utils\Arr;
$keys = [
'name'=>'张三',
'sex'=>1,
'product_id'=>0,
'value'=>'李四'
];
$configList = [
'name'=>'张三三',
'value'=>'李四王'
];
$res = Arr::getDefaultValue($keys, $configList);
var_dump($res);
/*
{
"name":"张三三",
"sex":1,
"product_id":0,
"value":"李四王"
}
*/
二、获取ivew菜单列表
public static function getMenuIviewList(array $data);
使用场景
用来获取iview ui下的菜单数据
使用方式
use crmeb\utils\Arr;
$data = [
[
'id'=>1,
'menu_name'=>'主页',
'menu_path'=>'/admin/',
'icon'=>'',
'header'=>'',
'is_header'=>1,
'pid'=>0,
],
[
'id'=>2,
'menu_name'=>'商品',
'menu_path'=>'/admin/product',
'icon'=>'',
'header'=>'',
'is_header'=>1,
'pid'=>0,
],
[
'id'=>3,
'menu_name'=>'商品列表',
'menu_path'=>'/admin/product/list',
'icon'=>'',
'header'=>'',
'is_header'=>1,
'pid'=> 2,
],
];
$res = Arr::getMenuIviewList($data);
var_dump($res);
/**
[
{
"path":"/admin/",
"title":"主页",
"icon":"",
"header":"",
"is_header":1,
"auth":"",
},
{
"path":"/admin/product",
"title":"商品",
"icon":"",
"header":"",
"is_header":1,
"auth":"",
"children":[
{
"path":"/admin/product/list",
"title":"商品列表",
"icon":"",
"header":"",
"is_header":0,
"auth":"",
}
],
}
]
*/
三、转化iviewUi需要的key值
public static function toIviewUi($data);
四、获取树型菜单
public static function getTree($data, $pid = 0, $level = 1);
五、获取子菜单
private static function getChild(&$arr, $id, $lev);
使用场景
toIviewUi、getTree、getChild 都是为了配置 getMenuIviewList 进行使用
六、格式化数据
public static function setValeTime(array $array, $value, $default = 0);
使用场景
使用一维数组时,为了确保数组中的每个键值对存在使用;
使用方式
use crmeb\utils\Arr;
$keyValue = ['name','value','sex'];
$data = [
'name' => '张三',
'value'=>'李四',
];
$res = Arr::setValeTime($keyValue, $data);
var_dump($res);
/*
{
"name":"张三",
"value":"李四",
"sex":0
}
*/
七、获取二维数组中某个值的集合重新组成数组,并判断数组中的每一项是否为真
public static function getArrayFilterValeu(array $data, string $filed);
使用场景
用于提取二维数组中某个值,并对值进行去重复和去空值的操作。和getUniqueKey
方法类似,不过多了一个去空值操作
使用方式
use crmeb\utils\Arr;
$data = [
[
'product_id'=>0,
'coupon_id'=>11,
],
[
'product_id'=>0,
'coupon_id'=>12,
],
[
'product_id'=>0,
'coupon_id'=>1,
],
[
'product_id'=>9,
'coupon_id'=>15,
],
[
'product_id'=>50,
'coupon_id'=>19,
],
];
$res = Arr::getArrayFilterValeu($data, 'product_id');
var_dump($res);
/**
[
{
"product_id":9,
"coupon_id":15
},
{
"product_id":50,
"coupon_id":19
}
]
*/
八、数组转字符串去重复
public static function unique(array $data);
九、获取数组中去重复过后的指定key值
public static function getUniqueKey(array $list, string $key);
使用场景
- 一般用于过滤二维数组中多重复的数据,使用在获取优惠券中关联的商品,去除掉重复的
使用方式
use crmeb\utils\Arr;
$data = [
[
'product_id'=>10,
'coupon_id'=>11,
],
[
'product_id'=>10,
'coupon_id'=>12,
],
[
'product_id'=>10,
'coupon_id'=>1,
],
[
'product_id'=>9,
'coupon_id'=>15,
],
[
'product_id'=>50,
'coupon_id'=>19,
],
];
$res = Arr::getUniqueKey($data, 'product_id');
var_dump($res);
/**
[
{
"product_id":10,
"coupon_id":1
},
{
"product_id":9,
"coupon_id":15
},
{
"product_id":50,
"coupon_id":19
}
]
*/
十、获取数组中随机值
public static function getArrayRandKey(array $data);
使用场景
- 例如使用在获取随机客服uid
- 例如使用在随机获取游客头像
使用方式
use crmeb\utils\Arr;
$data = [
0=>[
'name'=>'张三',
'uid'=>1,
],
1=>[
'name'=>'李四',
'uid'=>3,
],
2=>[
'name'=>'王五',
'uid'=>10,
],
3=>[
'name'=>'赵六',
'uid'=>5,
],
];
//随机取出$data数组中的一个值
$res = Arr::getArrayRandKey($data);