You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
think-library/src/helper/Arrays.php

188 lines
4.8 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
// +----------------------------------------------------------------------
// | ThinkLibrary 6.0 for ThinkPhP 6.0
// +----------------------------------------------------------------------
// | 版权所有 2017~2020 [ https://www.dtapp.net ]
// +----------------------------------------------------------------------
// | 官方网站: https://gitee.com/liguangchun/ThinkLibrary
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// +----------------------------------------------------------------------
// | gitee 仓库地址 https://gitee.com/liguangchun/ThinkLibrary
// | github 仓库地址 https://github.com/GC0202/ThinkLibrary
// | Packagist 地址 https://packagist.org/packages/liguangchun/think-library
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace DtApp\ThinkLibrary\helper;
/**
* 数组管理类
* @mixin Arrays
* @package DtApp\ThinkLibrary\helper
*/
class Arrays
{
/**
* 数组随机返回一个下标
* @param $array
* @return mixed
*/
public function rand(array $array)
{
return array_rand($array);
}
/**
* 数组随机返回一个值
* @param $array
* @return mixed
*/
public function randValue(array $array)
{
return $array[array_rand($array)];
}
/**
* 分隔数组
* @param array $array 数组
* @param int $num 数量
* @return array
*/
public function split(array $array, $num = 5): array
{
$arrRet = array();
if (!isset($array) || empty($array)) {
return $arrRet;
}
$iCount = count($array) / $num;
if (!is_int($iCount)) {
$iCount = ceil($iCount);
} else {
++$iCount;
}
for ($i = 0; $i < $iCount; ++$i) {
$arrInfos = array_slice($array, $i * $num, $num);
if (empty($arrInfos)) {
continue;
}
$arrRet[] = $arrInfos;
unset($arrInfos);
}
return $arrRet;
}
/**
* 多维数组去重
* @param array $array
* @return array
*/
public function unique(array $array): array
{
$out = array();
foreach ($array as $key => $value) {
if (!in_array($value, $out)) {
$out[$key] = $value;
}
}
$out = array_values($out);
return $out;
}
/**
* 二维数组根据某个键排序
* @param array $arrays
* @param string $sort_key
* @param int $sort_order
* @param int $sort_type
* @return array
*/
public function sort(array $arrays, string $sort_key, $sort_order = SORT_ASC, $sort_type = SORT_NUMERIC): array
{
$key_arrays = array();
if (is_array($arrays)) {
foreach ($arrays as $array) {
if (is_array($array)) {
$key_arrays[] = $array[$sort_key];
} else {
return [];
}
}
} else {
return [];
}
array_multisort($key_arrays, $sort_order, $sort_type, $arrays);
return $arrays;
}
/**
* 数组删除空格
* @param array $arr
* @return array
*/
public function trimArray(array $arr)
{
if (!is_array($arr)) {
return $arr;
}
foreach ($arr as $key => $value) {
if (is_array($value)) {
$arr[$key] = $this->TrimArray($value);
} else {
$arr[$key] = $this->trimAll($value);
}
}
return $arr;
}
/**
* 字符串删除空格
* @param $str
* @return string|string[]
*/
private function trimAll($str)
{
$oldchar = array(" ", " ", "\t", "\n", "\r");
$newchar = array("", "", "", "", "");
return str_replace($oldchar, $newchar, $str);
}
/**
* 把json字符串或json对象转json数组
* @param $output
* @return array
*/
public function toArray($output): array
{
if (is_array($output)) {
return $output;
}
if (is_object($output)) {
$output = json_encode($output, JSON_UNESCAPED_UNICODE);
}
return json_decode($output, true);
}
/**
* @param $array
* @return array
*/
public function valChunk($array,$name): array
{
$result = array();
$ar2 = [];
foreach ($array as $key => $value) {
foreach ($array as $k => $val) {
if ($value["{$name}"] == $val["{$name}"]) {
$ar2[] = $val;
}
}
$result[$value["{$name}"]] = $ar2;
$ar2 = [];
}
return $result;
}
}