123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- <?php
- // +----------------------------------------------------------------------
- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
- // +----------------------------------------------------------------------
- // | Author: CRMEB Team <admin@crmeb.com>
- // +----------------------------------------------------------------------
- namespace crmeb\utils;
- /**
- * 操作数组帮助类
- * Class Arr
- * @package crmeb\utils
- */
- class Arr
- {
- /**
- * 对数组增加默认值
- * @param array $keys
- * @return array
- */
- public static function getDefaultValue(array $keys, array $configList = [])
- {
- $value = [];
- foreach ($keys as $val) {
- if (is_array($val)) {
- $k = $val[0] ?? '';
- $v = $val[1] ?? '';
- } else {
- $k = $val;
- $v = '';
- }
- $value[$k] = $configList[$k] ?? $v;
- }
- return $value;
- }
- /**
- * 获取ivew菜单列表
- * @param array $data
- * @return array
- */
- public static function getMenuIviewList(array $data)
- {
- return Arr::toIviewUi(Arr::getTree($data));
- }
- /**
- * 转化iviewUi需要的key值
- * @param $data
- * @return array
- */
- public static function toIviewUi($data)
- {
- $newData = [];
- foreach ($data as $k => $v) {
- $temp = [];
- $temp['path'] = $v['menu_path'];
- $temp['title'] = $v['menu_name'];
- $temp['icon'] = $v['icon'];
- $temp['header'] = $v['header'];
- $temp['is_header'] = $v['is_header'];
- if ($v['is_show_path']) {
- $temp['auth'] = ['hidden'];
- }
- if (!empty($v['children'])) {
- $temp['children'] = self::toIviewUi($v['children']);
- }
- $newData[] = $temp;
- }
- return $newData;
- }
- /**
- * 获取树型菜单
- * @param $data
- * @param int $pid
- * @param int $level
- * @return array
- */
- public static function getTree($data, $pid = 0, $level = 1)
- {
- $childs = self::getChild($data, $pid, $level);
- $dataSort = array_column($childs, 'sort');
- array_multisort($dataSort, SORT_DESC, $childs);
- foreach ($childs as $key => $navItem) {
- $resChild = self::getTree($data, $navItem['id']);
- if (null != $resChild) {
- $childs[$key]['children'] = $resChild;
- }
- }
- return $childs;
- }
- /**
- * 获取子菜单
- * @param $arr
- * @param $id
- * @param $lev
- * @return array
- */
- private static function getChild(&$arr, $id, $lev)
- {
- $child = [];
- foreach ($arr as $k => $value) {
- if ($value['pid'] == $id) {
- $value['level'] = $lev;
- $child[] = $value;
- }
- }
- return $child;
- }
- /**
- * 格式化数据
- * @param array $array
- * @param $value
- * @param int $default
- * @return mixed
- */
- public static function setValeTime(array $array, $value, $default = 0)
- {
- foreach ($array as $item) {
- if (!isset($value[$item]))
- $value[$item] = $default;
- else if (is_string($value[$item]))
- $value[$item] = (float)$value[$item];
- }
- return $value;
- }
- /**
- * 获取二维数组中某个值的集合重新组成数组,并判断数组中的每一项是否为真
- * @param array $data
- * @param string $filed
- * @return array
- */
- public static function getArrayFilterValeu(array $data, string $filed)
- {
- return array_filter(array_unique(array_column($data, $filed)), function ($item) {
- if ($item) {
- return $item;
- }
- });
- }
- /**
- * 获取二维数组中最大的值
- * @param $arr
- * @param $field
- * @return int|string
- */
- public static function getArrayMax($arr, $field)
- {
- $temp = [];
- foreach ($arr as $k => $v) {
- $temp[] = $v[$field];
- }
- if (!count($temp)) return 0;
- $maxNumber = max($temp);
- foreach ($arr as $k => $v) {
- if ($maxNumber == $v[$field]) return $k;
- }
- return 0;
- }
- /**
- * 获取二维数组中最小的值
- * @param $arr
- * @param $field
- * @return int|string
- */
- public static function getArrayMin($arr, $field)
- {
- $temp = [];
- foreach ($arr as $k => $v) {
- $temp[] = $v[$field];
- }
- if (!count($temp)) return 0;
- $minNumber = min($temp);
- foreach ($arr as $k => $v) {
- if ($minNumber == $v[$field]) return $k;
- }
- return 0;
- }
- /**
- * 数组转字符串去重复
- * @param array $data
- * @return false|string[]
- */
- public static function unique(array $data)
- {
- return array_unique(explode(',', implode(',', $data)));
- }
- /**
- * 获取数组中去重复过后的指定key值
- * @param array $list
- * @param string $key
- * @return array
- */
- public static function getUniqueKey(array $list, string $key)
- {
- return array_unique(array_column($list, $key));
- }
- /**
- * 获取数组钟随机值
- * @param array $data
- * @return bool|mixed
- */
- public static function getArrayRandKey(array $data)
- {
- if (!$data) {
- return false;
- }
- mt_srand();
- $mun = rand(0, count($data));
- if (!isset($data[$mun])) {
- return self::getArrayRandKey($data);
- }
- return $data[$mun];
- }
- /**
- * 格式化数据
- * @param array $list
- * @return array
- */
- public static function formatShipping(array $list)
- {
- $freeDate = [];
- foreach ($list as $item) {
- $freeDate[$item['uniqid']][] = $item;
- }
- $data = [];
- foreach ($freeDate as $item) {
- $cityIds = [];
- $cityId = [];
- $p = [];
- foreach ($item as $value) {
- $cityId[] = $value['city_id'];
- $cityIds[] = is_array($value['value']) ? $value['value'] : json_decode($value['value'], true);
- unset($value['city_id'], $value['value']);
- $p = $value;
- }
- $p['city_id'] = $cityId;
- $p['city_ids'] = $cityIds;
- $data[] = $p;
- }
- return $data;
- }
- /**
- * 过滤字段
- * @param $value
- * @param array $filter
- * @return mixed
- */
- public static function StrFilterValue($value, array $filter = [])
- {
- $filter = $filter ?: ['strip_tags', 'addslashes', 'trim', 'htmlspecialchars'];
- foreach ($filter as $closure) {
- if (function_exists($closure)) {
- $value = $closure($value);
- }
- }
- return $value;
- }
- /**
- * 过滤字段
- * @param array $data
- * @return array
- */
- public static function filterValue(array $data)
- {
- foreach ($data as &$item) {
- if (is_array($item)) {
- $item = self::filterValue($item);
- } else {
- $item = self::StrFilterValue($item);
- }
- }
- return $data;
- }
- }
|