初始化-安装依赖

This commit is contained in:
2026-03-03 10:06:12 +08:00
parent 3f349a35a4
commit ec8cac4221
187 changed files with 26292 additions and 0 deletions

View File

@@ -0,0 +1,204 @@
<?php
// +----------------------------------------------------------------------
// | saiadmin [ saiadmin快速开发框架 ]
// +----------------------------------------------------------------------
// | Author: sai <1430792918@qq.com>
// +----------------------------------------------------------------------
namespace plugin\saiadmin\utils;
/**
* Array操作类
* Class Arr
*/
class Arr
{
/**
* 获取数组中指定的列
* @param array $source
* @param string $column
* @return array
*/
public static function getArrayColumn($source, $column): array
{
$columnArr = [];
foreach ($source as $item) {
$columnArr[] = $item[$column];
}
return $columnArr;
}
/**
* 批量获取数组中指定的列
* @param array $source
* @param array $column
* @return array
*/
public static function getArrayColumns($source, $columns): array
{
$columnArr = [];
foreach ($source as $item) {
$tempArr = [];
foreach ($columns as $key) {
$temp = explode('.', $key);
if (count($temp) > 1) {
$tempArr[$key] = $item[$temp[0]][$temp[1]];
} else {
$tempArr[$key] = $item[$key];
}
}
$columnArr[] = $tempArr;
}
return $columnArr;
}
/**
* 把二维数组中某列设置为key返回
* @param array $array 输入数组
* @param string $field 要作为键的字段名
* @param bool $unique 要做键的字段是否唯一(该字段与记录是否一一对应)
* @return array
*/
public static function fieldAsKey($array, $field, $unique = false) {
$result = [];
foreach ($array as $item) {
if (isset($item[$field])) {
if (!$unique && isset($result[$item[$field]])) {
$unique = true;
$result[$item[$field]] = [($result[$item[$field]])];
$result[$item[$field]][] = $item;
} elseif ($unique) {
$result[$item[$field]][] = $item;
} else {
$result[$item[$field]] = $item;
}
}
}
return $result;
}
/**
* 数组转字符串去重复
* @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));
}
/**
* 合并二维数组并且指定key去重, 第一个覆盖第二个
* @param array $arr1
* @param array $arr2
* @param string $key
* @return array
*/
public static function mergeArray(array $arr1, array $arr2, string $key)
{
$arr = array_merge($arr1,$arr2);
$tmp_arr = [];
foreach($arr as $k => $v) {
if(in_array($v[$key], $tmp_arr)) {
unset($arr[$k]);
} else {
$tmp_arr[] = $v[$key];
}
}
return $arr;
}
/**
* 相同键值的合并作为键生成新数组
* @param array $data
* @param string $field
* @return array
*/
public static function groupSameField(array $data, string $field)
{
$result= [];
foreach ($data as $key => $info) {
$result[$info[$field]][] = $info;
}
return $result;
}
/**
* 生成无限级树算法
* @param array $arr 输入数组
* @param number $pid 根级的pid
* @param string $column_name 列名,id|pid父id的名字|children子数组的键名
* @return array $ret
*/
public static function makeTree($arr, $pid = 0, $column_name = 'id|pid|children') {
list($idname, $pidname, $cldname) = explode('|', $column_name);
$ret = array();
foreach ($arr as $k => $v) {
if ($v [$pidname] == $pid) {
$tmp = $arr [$k];
unset($arr [$k]);
$tmp [$cldname] = self::makeTree($arr, $v [$idname], $column_name);
$ret [] = $tmp;
}
}
return $ret;
}
/**
* 二位数组按某个键值排序
* @param array $arr
* @param string $key
* @param int $sort
* @return array
*/
public static function sortArray($arr, $key, $sort = SORT_ASC)
{
array_multisort(array_column($arr,$key),$sort,$arr);
return $arr;
}
/**
* 数组中根据某一列中某个字段的值来查询这一列数据
* @param $array
* @param $column
* @param $value
* @return array
*/
public static function getArrayByColumn($array, $column, $value): array
{
$result = [];
foreach ($array as $key => $item) {
if ($item[$column] == $value) {
$result = $item;
}
}
return $result;
}
/**
* 数组中根据key值获取value
* @param $array
* @param $key
* @return mixed|string
*/
public static function getConfigValue($array, $key)
{
foreach ($array as $item) {
if ($item['key'] === $key) {
return $item['value'];
}
}
return '';
}
}