<?php
namespace App\Util\Tool;
class Tools {
/**
* 打印
* @param array $var var
* @param int $exit exit
* @return null
*/
public static function dump($var, $exit = 1) {
echo "<pre>";
print_r($var);
echo "</pre>";
if ($exit) {
exit(0);
}
}
/**
* 二维数组循环 获取一位数组某一个字段的总和
* @param array $array array
* @param string $field field
*
* @return float|int
*/
public static function sum($array, $field) {
$sum = [];
foreach ($array as $key => $value) {
$sum[] = (int)$value[$field];
}
return array_sum($sum);
}
/**
* 数组循环按某一字段分组
* @param array $array array
* @param string $field field
* @param int $multi multi
* @return array
*/
public static function group($array, $field, $multi = 1) {
$result = [];
if (!empty($array)) {
if ($multi == 1) {
foreach ($array as $Key => $Value) {
$result[$Value[$field]][] = $Value;
}
} else {
foreach ($array as $Key => $Value) {
$result[$Value[$field]] = $Value;
}
}
}
return $result;
}
/**
* 获取请求时间
* @return int
*/
public static function getRequestTime() {
return $_SERVER['REQUEST_TIME'];
}
/**
* 生成文件名字符串
* @param int $length length
* @return string
*/
public static function makeString($length = 32) {
$length = abs($length);
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$randstr = '';
for ($i = 0; $i < $length; $i++) {
$randstr .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $randstr;
}
/**
* 生成随机数字
* @param int $length length
* @return string
*/
public static function makeInt($length = 16) {
$length = abs($length);
$chars = '0123456789';
$randstr = '';
for ($i = 0; $i < $length; $i++) {
$randstr .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $randstr;
}
/**
* 获取客户端IP
* @return string
*/
public static function getClientIp() {
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
$ip = getenv("HTTP_CLIENT_IP");
} else {
if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} else {
if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
$ip = getenv("REMOTE_ADDR");
} else {
if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR']
&& strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
$ip = $_SERVER['REMOTE_ADDR'];
} else {
$ip = "unknown";
}
}
}
}
return $ip;
}
/**
* getClientIpHex
* @return int
*/
public static function getClientIpHex() {
$ip = self::getClientIp()=='unknown' ? '0.0.0.0' : self::getClientIp();
return dechex(ip2long($ip));
}
/**
* array转json
*
* @param array $array array
*
* @return string
*/
public static function arrayToJson($array) {
return json_encode($array, JSON_UNESCAPED_UNICODE);
}
/**
* josnToArray
*
* @param string $json json
*
* @return array
*/
public static function jsonToArray($json) {
return json_decode($json, true);
}
/**
* 返回图片完整地址
* @param string $path path
* @param int $config config
* @param int $https https
* @return string
*/
public static function imgUrl($path, $config = 0, $https = 1) {
$imgUrl = imgUrl($path, $config);
if ($https!=0) {
if (substr($imgUrl, 0, 5)!='https') {
$imgUrl = str_replace('http', 'https', $imgUrl);
}
}
return $imgUrl;
}
/**
* 返回数据
* @param int $code 信息代码
* @param string $msg 提示信息
* @param string $data 数据
* @param int $format format
* @return string|array
*/
public static function result($code = 0, $msg = '', $data = '', $format = 0) {
$result = ['code' => $code, 'msg' => $msg, 'body' => $data];
switch ($format) {
case 0:
return $result;
case 1:
return self::arrayToJson($result);
break;
case 2:
default:
break;
}
}
/**
* 获得毫秒数,13位
*/
public static function getMicrotime() {
return (int)microtime(true)*1000;
}
/**
* 二维数组按字段排序
* @param array $multiarray 二维数组
* @param string $field 要排序的字段
* @param int $sort SORT_ASC 升序 SORT_DESC 降序
* @return array|bool
*/
public function arrayFieldSort(Array $multiarray, $field, $sort = SORT_ASC) {
if (empty($field)) {
return false;
}
if (!empty($multiarray)) {
$keys = [];
foreach ($multiarray as $row) {
if (is_array($row) && isset($row[$field])) {
$keys[] = $row[$field];
} else {
return false;
}
}
} else {
return [];
}
array_multisort($keys, $sort, $multiarray);
return $multiarray;
}
/**
* 在数组指定位置插入数组
* @param array $array 原数组
* @param int $position 需要插入到原数组的位置
* @param array $insert_array 需要插入的数组
* @return array
*/
public function array_insert (&$array, $position, $insert_array) {
$first_array = array_splice ($array, 0, $position);
$array = array_merge ($first_array, $insert_array, $array);
}
/**
* @param int $num 数字
* @param int $accuracy 保留位数
* @return float
*/
public function formatNumFloor($num, $accuracy) {
$s = 1;
for ($i = 0; $i < $accuracy; $i++) {
$s = $s * 10;
}
$num = floor($num * $s);
return $num / $s;
}
/**
* 取两位小数 四舍五入
* @param int $num 数字
* @param int $accuracy 保留位数
* @return float
*/
public function formatNumRoundHalfEven($num, $accuracy) {
$f = $num;
$s = 1;
for ($i = 0; $i < $accuracy; $i++) {
$s = $s * 10;
}
$floor = floor($f * $s);
$decimal = $f * $s - $floor;
if ($decimal == 0.5) {
$f = round($f * $s);
if ($floor % 2 == 0) {
$f = $floor;
}
} else {
$f = round($f * $s);
}
return $f / $s;
}
}
常用的common function库(四)
于 2022-06-08 15:48:33 首次发布