数组操作工具

数据操作工具类主要存放,常用操作数组的方法,扩展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);

使用场景
  1. 一般用于过滤二维数组中多重复的数据,使用在获取优惠券中关联的商品,去除掉重复的
使用方式
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);

使用场景
  1. 例如使用在获取随机客服uid
  2. 例如使用在随机获取游客头像
使用方式
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);