当前位置:首页 > 编程技术 > 正文内容

PHP 常用功能函数

yc8882年前 (2023-01-15)编程技术319

PHP 常用功能函数

1. 生成指定长度的随机英文数字字符串


  1. /**
  2. * 生成指定长度的随机英文数字字符串
  3. * @param int $length 字符串长度
  4. * @return string 成的随机字符串
  5. */
  6. function getRandString($length)
  7. {
  8. $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  9. $randomString = '';
  10. for ($i = 0; $i < $length; $i++) {
  11. $randomString .= $characters[rand(0, strlen($characters) - 1)];
  12. }
  13. return $randomString;
  14. }

2. 生成24位随机订单号, 年月日时分秒(14位) + 10位随机数


  1. /**
  2. * 生成24位随机订单号
  3. * 年月日时分秒(14位) + 10位随机数
  4. */
  5. function ordersn()
  6. {
  7. return date('YmdHis') . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8) . mt_rand(10, 99);
  8. }
  9. /**
  10. * 随机生成18位数字订单号(18位:不包含前缀)
  11. * @param string $prefix 订单号前缀
  12. * @return string 随机订单号
  13. */
  14. function generateOrdersn(string $prefix = '')
  15. {
  16. return $prefix . date('YmdHis') . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 2) . mt_rand(10, 99);
  17. }

3. 根据时间戳出计算到现在的文字时间


  1. /**
  2. * 将时间戳转为文字时间
  3. * @param integer $time
  4. */
  5. function wordTime(int $time)
  6. {
  7. $str = '';
  8. $time = intval(substr($time, 0, 10));
  9. $int = time() - $time;
  10. if ($int < 5){
  11. $str = sprintf('刚刚', $int);
  12. } elseif ($int < 60){
  13. $str = sprintf('%d秒前', $int);
  14. } elseif ($int < 3600) {
  15. $str = sprintf('%d分钟前', floor($int / 60));
  16. } elseif ($int < 86400){
  17. $str = sprintf('%d小时前', floor($int / 3600));
  18. } elseif ($int < 2592000) {
  19. $str = sprintf('%d天前', floor($int / 86400));
  20. } else {
  21. $str = date('Y-m-d H:i:s', $time);
  22. }
  23. return $str;
  24. }

4. 格式化数字(将一个整数进行单位转换: 万、亿)


  1. /**
  2. * 整数格式化, 单位转换
  3. * @param integer $num
  4. */
  5. function formatNumber(int $num)
  6. {
  7. $num = intval($num);
  8. $length = strlen($num);
  9. if ( $length > 8 ) {
  10. $decimal = rtrim(substr($num, -8, 2), '0');
  11. $decimal = $decimal ? '.' . $decimal : '';
  12. // 亿
  13. return substr($num, 0, strrpos($num, substr($num, -7)) - 1) . $decimal . '亿';
  14. } elseif ( $length > 4 ) {
  15. $decimal = rtrim(substr($num, -4, 2), '0');
  16. $decimal = $decimal ? '.' . $decimal : '';
  17. // 万
  18. return substr($num, 0, strrpos($num, substr($num, -3)) - 1) . $decimal . 'W';
  19. } else {
  20. // 千
  21. return $num;
  22. }
  23. }

5. 构建 TP6 模型搜索器数据


使用示例

  1. $where = ['id' => 1, 'name' => '张三'];//查询条件
  2. $where = where_filter($where, $fields);//构建搜索器参数
  3. $data = User::withSearch($fields, $where)->select();

自定义函数, 用于TP6搜索器

  1. /**
  2. * 去掉数组空字符串,返回所有键
  3. *
  4. * @param array $where
  5. * @param array $keys
  6. * @return array
  7. */
  8. function where_filter(array $where, &$keys)
  9. {
  10. // 去掉数组里的空值 (会正常返回:false、0)
  11. $where = array_filter($where, function ($k) {
  12. return ($k === '' || $k === null) ? false : true;
  13. });

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10380.html

标签: 软件编程
分享给朋友:

“PHP 常用功能函数” 的相关文章

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】vagrant实现linux虚拟机的安装并配置网络

【说站】vagrant实现linux虚拟机的安装并配置网络

一、VirtualBox的下载和安装1、下载VirtualBox官网下载:https://www.virtualbox.org/wiki/Downloads我的电脑是Windows的,所以下载Wind...

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何...

【说站】linux中redis如何以redis用户重启?

【说站】linux中redis如何以redis用户重启?

通过上图我们可以看到,目前状态是已经以 redis 用户启动着,我想修改下 redis 的密码,然后怎么以 redis 用户重启呢?redis 是 nologin 用户,不能通过 su redis 切...

【说站】使用systemctl配置dnspod-shell实现ddns

【说站】使用systemctl配置dnspod-shell实现ddns

这个是毛子路由器上用的脚本,由于碳云的nat服务器公网IP不断的变,因此只好通过ddns来稳定连接nat服务器了。顺便水一篇文章,大家新年快乐。使用前需要将域名添加到 DNSPod 中,并添加一条A记...