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 * ...
随机推荐
- FLASH-CH32F103替换STM32F103 FLASH快速编程移植说明
因CH32F103 相对于STM32F103 flash 操作多了快速编程模式,该文档说明主要目的是为了方便客户在原先ST 工程的基础上实现flash 快速编程模式的快速移植. 1.在stm32f10 ...
- 二、typora软件的安装与markdown语法
目录 一.typora软件的安装与使用 1.软件的安装 2.破解使用的方法 3.功能描述(markdown语法讲解) 标题 小标题 语言环境 表格 表情 图片 查看源代码 数学公式 流程图 高亮文本 ...
- Bootstrap的Modal与WebUploader联用的问题及办法
问题描述:在使用Bootstrap的Modal的时候,在Modal中用了WebUploader插件,然后WebUploader的绑定按钮无法点击 在网上找了一些结果,觉得,他们的问题解决方案感觉都不够 ...
- 懂九转大肠的微软New Bing 内测申请教程
最近微软的New Bing开放内测了,网上已经有拿到内测资格的大佬们对比了ChatGPT和New Bing.对比结果是New Bing比ChatGPT更强大.来看看具体对比例子吧 1.时效性更强 Ch ...
- C++ 练习10 动态分配内存
动态分配内存可以使的程序在内存中更加灵活地使用 动态分配数组使用new函数 1 #include <iostream> 2 constexpr auto N = 5; 3 using na ...
- ctfshow_web入门 PHP特性
PHP特性 这里以半做题,半学习为主,所以就显得比较啰嗦 阿巴阿巴,但是实际上,写得比较水,等过一段时间再总结一下 比较深刻的印象是:下一个手册,多看手册 从web135还是几开始,就是看的这个师傅的 ...
- 题解 Trie 但是你要最小化它的节点数量
名字瞎取的 Description 给定 \(n\) 个字符串 \(s\),可以对 \(s_i\) 的字符打乱,将这些字符串加入一个 trie 里面求节点数量最小值. \(n\le 16, \sum ...
- Vue学习笔记之Vue-CLI快速使用
1. 概述 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 @vue/cli 实现的交互式的项目脚手架. 通过 @vue/cli + @vue/cli-service- ...
- 分析总结一下所有有关打印题目的套路和思路:pat乙级:1109 擅长C, 1008元素循环右移,1050 螺旋矩阵,1027 打印沙漏等等
分析: 首先你要明白第一件事:所有要打印东西的题目打印都是从第一行到最后一行,从第一列到最后一列,你是没办法跳着打印的.可以看看其他几个打印题目1008元素循环右移,1050 螺旋矩阵1027 打印沙 ...
- centos7配置vue环境
1.安装nodejs #下载源码 wget https://npm.taobao.org/mirrors/node/v14.15.4/node-v14.15.4-linux-x64.tar.xz #解 ...