php 常用助手函数
1 <?php
2
3 if (!function_exists('bcSum')) {
4 function bcSum($scale, ...$args): string
5 {
6 $result = '0.00';
7 foreach ($args as $arg) {
8 $result = bcadd($result, $arg, $scale);
9 }
10 return $result;
11 }
12 }
13
14 if (!function_exists('yuanToWan')) {
15 function yuanToWan($yuan): float
16 {
17 return floatval(bcdiv($yuan, 10000, 6));
18 }
19 }
20
21
22 if (!function_exists('calCompleteDegree')) {
23 function calCompleteDegree($actual, $target, $scale = 4): float|null
24 {
25 if (bccomp($target, '0.00', $scale + 1) === 0) {
26 return null;
27 } elseif (bccomp($target, '0.00', $scale + 1) > 0) {
28 return round(bcdiv($actual, $target, $scale + 1), $scale);
29 } else {
30 return round(
31 bcdiv(
32 bcsub(bcmul(2, $target, $scale + 1), $actual, $scale + 1),
33 $target,
34 $scale + 1
35 ),
36 $scale
37 );
38 }
39 }
40 }
41
42 if (!function_exists('calPercentage')) {
43 function calPercentage($num1, $num2, $scale = 4): float|string
44 {
45 return bccomp($num2, '0.00', $scale + 1) !== 0
46 ? round(bcdiv($num1, $num2, $scale + 1), $scale) : '';
47 }
48 }
49
50 if (!function_exists('arrayKsort')) {
51 function arrayKsort(&$array): bool
52 {
53 if (!isset($array) || !is_array($array)) {
54 return false;
55 }
56
57 foreach ($array as $k => $v) {
58 unset($array[$k]);
59 $key = mb_convert_encoding($k, 'GBK', 'UTF-8');
60 $array[$key] = $v;
61 }
62 ksort($array);
63 foreach ($array as $k => $v) {
64 unset($array[$k]);
65 $key = mb_convert_encoding($k, 'UTF-8', 'GBK');
66 $array[$key] = $v;
67 }
68 return true;
69 }
70 }
71
72 if (!function_exists('arraySort')) {
73 function arraySort(&$array)
74 {
75 if (!isset($array) || !is_array($array)) {
76 return false;
77 }
78 $tmp = [];
79 foreach ($array as $k => $v) {
80 $array[$k] = mb_convert_encoding($v, "GBK", "UTF-8");
81 $tmp[$array[$k]] = $v;
82 }
83 sort($array);
84 foreach ($array as &$value) {
85 $value = $tmp[$value];
86 }
87 return true;
88 }
89 }
90
91 if (!function_exists('checkDateFormat')) {
92 function checkDateFormat($dateStr, $format = "Y-m-d"): bool
93 {
94 return date($format, strtotime($dateStr)) === $dateStr;
95 }
96 }
97
98 if (!function_exists('dateMonths')) {
99 /**
100 * @param $date1
101 * @param $date2
102 * @return int
103 */
104 function dateMonths($date1, $date2): int
105 {
106 $date1 = explode('-', $date1);
107
108 $date2 = explode('-', $date2);
109
110 return intval(abs(intval($date1[0]) - intval($date2[0])) * 12 + (abs(intval($date1[1]) - intval($date2[1])) + 1));
111 }
112 }
113
114 if (!function_exists('splitDateRange')) {
115 function splitDateRange($startDate, $endDate, int $step = 7): array
116 {
117 $result = [];
118 $step = $step < 1 ? 1 : $step - 1;
119 $startDate = date("Y-m-d", strtotime($startDate));
120 $endDate = date("Y-m-d", strtotime($endDate));
121
122 do {
123 $tmpEndDate = date('Y-m-d', strtotime($startDate. " +{$step} day"));
124 if (strtotime($tmpEndDate) >= strtotime($endDate)) {
125 $tmpEndDate = $endDate;
126 $result[] = [$startDate . " 00:00:00", $tmpEndDate . " 23:59:59"];
127 break;
128 } else {
129 $result[] = [$startDate . " 00:00:00", $tmpEndDate . " 23:59:59"];
130 $startDate = date('Y-m-d', strtotime($tmpEndDate. " +1 day"));
131 }
132 } while (true);
133
134 return $result;
135 }
136 }
137
138 if (!function_exists('showMonthRange')) {
139 function showMonthRange($start, $end): array
140 {
141 $end = date('Y-m', strtotime($end)); // 转换为月
142 $range = [];
143 $i = 0;
144 do {
145 $month = date('Y-m', strtotime($start . ' + ' . $i . ' month'));
146 $range[] = $month;
147 $i++;
148 } while ($month < $end);
149
150 return $range;
151 }
152 }
php 常用助手函数的更多相关文章
- ThinkPHP5 助手函数
对于ThinkPHP5.0以前的版本,助手函数全部是单字母函数,但到ThinkPHP5之后,使用如下函数来代替单字母函数: 最常用: /** * 实例化Model * @param string $n ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...
- php常用字符串函数小结
php内置了98个字符串函数(除了基于正则表达式的函数,正则表达式在此不在讨论范围),能够处理字符串中能遇到的每一个方面内容,本文对常用字符串函数进行简单的小结,主要包含以下8部分:1.确定字符串长度 ...
- php常用数组函数回顾一
数组对于程序开发来说是一个必不可少的工具,我根据网上的常用数组函数,结合个人的使用情况,进行数组系列的总结复习.里面当然不只是数组的基本用法,还有相似函数的不同用法的简单实例,力求用最简单的实例,记住 ...
- byte数据的常用操作函数[转发]
/// <summary> /// 本类提供了对byte数据的常用操作函数 /// </summary> public class ByteUtil { ','A','B',' ...
- WordPress主题模板层次和常用模板函数
首页: home.php index.php 文章页: single-{post_type}.php – 如果文章类型是videos(即视频),WordPress就会去查找single-videos. ...
- Python 常用string函数
Python 常用string函数 字符串中字符大小写的变换 1. str.lower() //小写>>> 'SkatE'.lower()'skate' 2. str.upper ...
- MySQL之MySQL常用的函数方法
MySQL常用函数 本篇主要总结了一些在使用MySQL数据库中常用的函数,本篇大部分都是以实例作为讲解,如果有什么建议或者意见欢迎前来打扰. limit Select * from table ord ...
- Delphi常用系统函数总结
Delphi常用系统函数总结 字符串处理函数 Unit System 函数原型 function Concat(s1 [, s2,..., sn]: string): string; 说明 与 S : ...
- iOS开发数据库篇—SQLite常用的函数
iOS开发数据库篇—SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 * ...
随机推荐
- 11月30日内容总结——前端简介、http协议概念、html协议概念及基础知识和部分标签的讲解
目录 一.前端与后端的概念 什么是前端开发? 什么是后端? 学习前端的目的 前端三剑客 二.前端前戏 三.HTTP协议 1.四大特性 2.报文格式 3.响应状态码 四.HTML概览 1.HTML简介 ...
- python学习第二周总结
上周内容概要 基本数据类型之布尔值 基本数据类型至元组 基本数据类型之集合 与用户交互 格式化输出 基本运算符 常用运算符 逻辑运算符 成员运算符 身份运算符 垃圾回收与机制 流程控制理论 流程控制之 ...
- 基于Apache Hudi 构建Serverless实时分析平台
NerdWallet 的使命是为生活中的所有财务决策提供清晰的信息. 这涵盖了一系列不同的主题:从选择合适的信用卡到管理您的支出,到找到最好的个人贷款,再到为您的抵押贷款再融资. 因此,NerdWal ...
- 五大数据类型 - 字符串 - 列表 list - 集合set - 有序集合 - 哈希 hashMap
基础知识 redis默认有16个数据库:默认使用的是第0个. 可以使用select num切换 查看DB大小 DBSIZE 查看所有的key **keys ** 清空当前数据库 flushdb 清空全 ...
- vue3.0+echart可视化
vue3.0 + echart可视化 案例1: 案例代码 <template> <div ref="test" style="width:800px;h ...
- Linux(CentOS)安装Redis保姆级教程
Linux(CentOs)安装Redis教程 一,下载Redis(两种方式) 1,找到redis官网(https://redis.io/download) 如果想下载指定版本就去这个网址(https: ...
- 基于C++的OpenGL 03 之纹理
1. 概述 本文基于C++语言,描述OpenGL的纹理 前置知识可参考: 基于C++的OpenGL 02 之着色器 - 当时明月在曾照彩云归 - 博客园 (cnblogs.com) 笔者这里不过多描述 ...
- LeetCode-396 选转函数
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rotate-function 题目描述 给定一个长度为 n 的整数数组 nums . 假设 ar ...
- SpringCloud微服务实战——搭建企业级开发框架(四十九):数据字典注解的设计与实现
数据字典是系统中基本的必不可少的功能,在多种多样的系统中,数据字典表的设计都大同小异.但是使用方式确是多种多样,设计好一套易用的数据字典功能模块,可以使开发事半功倍. 常用的数据字典使用方式: 直 ...
- 多个module的verilog文件分割为多个文件
python 分割含有多个module的verilog文件,按照module名来命名文件 import re # 读取 Verilog 文件 with open('test.v', 'r') as f ...