自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (2)
  • 收藏
  • 关注

原创 php中根据数字月份返回月份的英文缩写

前言在项目开发的过程中有时候需要对月份进行英文转换。 /** * 获取月份缩写 * @param string $month 月份 */ function get_month_abbr($month) { $month = (int) $month; $monthEng = [ 1 => "Jan", 2 => "Feb", 3 =&gt

2021-09-14 14:24:05 21

原创 php中生成随机的6位邀请码

前言在系统开发的过程中有时候需要在用户注册的时候输入邀请码,这里分享一种快速生成邀请码的方法。 /** * 生成邀请码 * @param unitCode */ function create_invite_code($unitCode, $len = 3) { $arr = ["1", "2", "3", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H",

2021-09-14 14:10:36 43

原创 php中时间戳转换为毫秒以及格式化时间

前言有时候需要对时间戳进行操作,比如获取13位毫秒级的时间戳或者对时间戳进行格式化时间。 /** * 转化时间为毫秒时间戳 * @param int|string $time 时间戳|日期 * @return int */ function get_time($time) { if (is_numeric($time)) { return (int) str_pad($time, 13, "0", ST

2021-09-14 13:58:25 60

原创 php中在二维数组中根据值返回对应的键值

前言在进行数组操作的时候有时候需要根据数组中的值找寻对应的键值,这里分享一个方法,可以快速的根据二维数组中的值找寻对应的键值。 /** *根据值返回对于的key 键名 *@param $search[string] 搜索的值 *@param $array[array] 被搜索的数组 *@return 找到返回键名 未找到返回false */ function deep_get_key($search, $arr) {

2021-09-14 13:53:11 40

原创 php中计算树状结构数据中的合计

前言在项目开发的过程中有时候遇到树状结构数据计算从最末级节点依次计算到根节点中所有数据值的和,也就是计算子级节点数据相加等于父级节点,以此类推到根节点。下面的方法使用到了递归查询计算的方法。树状结构数据示例:$tree = [ 0 => [ "Code" => "1", "PCode" => "", "num" => 1, "Price" => 2, "children" =>

2021-09-10 16:47:57 10

原创 php中的二维数组去重

前言有时候在数据库进行join关联查询数据的时候会查询出一些重复的数据需要进行手动去重操作,避免返回到列表中出现重复的数据。/** * 1.删除二维数组中相同项的数据,一般用于数据库查询结果中相同记录的去重操作 * 2.重置一下二维数组的索引 * @param array $_2d_array 二维数组,类似: * $tmpArr = array( * array('id' => 1, 'value' => '15046f5de5bb708e'), *

2021-09-07 17:34:53 14

原创 php中的数字金额转换大写数字

前言有时候需要进行数字金额与大写汉字金额的转换,网上虽然有很多的方法,但是大多都很混乱,这里整理一个现在在使用、感觉还不错的方法。 /** * 数字金额转换大写数字 * @param [float] $num 数字类型 * @return void */ function convert_case_number($num) { //转换数字类型 $num = (float) $num; //判断

2021-09-07 16:55:09 7

原创 php中判断版本号是否连续

前言在做excel数据导入到数据库表的过程中需要验证excel中的版本号一栏中的版本号是否连续。版本号格式:1,1.1,1.2,1.2.1,2,2.1,2.2,2.2.1(正确)版本号格式:1,1.1,1.1,1.2.1,2,2.1,2.2,2.2.1(错误)版本号格式:1,1.2,1.1,1.2.1,2,2.2,2.1,2.1.1(错误)这里需要用到php中的字符串函数,strpos,strrpos,substr。 /** * 判断编号是否连续,编号格式:1,1.1,1.2,1

2021-09-07 16:46:05 20

原创 php中计算两个日期之前相差多少天、月、年

前言最近在开发项目的过程中遇到需要计算两个日期之间相差了多少天、多少月、多少年,下边总结了一种计算方法,供大家参考。解决办法/** * 计算两个日期之前相差多少天/月/年 * @param string $start_time 开始日期 * @param string $end_time 结束日期 * @param int $type 类型(1:相差天数,2:相差月数,3:相差年数) */function get_count_form_date($start_time, $end_time

2021-07-01 15:26:57 41 1

原创 php中删除指定文件夹下的内容

前言在之前做远程文件下载到本地然后打包下载的功能中存在文件重复的问题,导致下载的压缩中有之前下载过的文件,下边介绍一种方法可以在下载之前删除指定文件夹中的文件,保证每次都是最新的文件。解决方法 /** * 删除指定文件夹下的内容 * @param $dirname * @param boolean $self * @return void */ function do_rmdir($dirname, $self = false)

2021-06-22 17:00:37 26 3

原创 php中在树状数据结构中获取从子级节点到根节点的所有节点数据

前言在处理树状结构数据中,有时候需要查询从子级节点到根节点的所有节点数据。例如:$tree = [ [ "id" => 1, "pid" => 0, "title" => "湖北省", "children" => [ [ "id" => 2, "pid" => 1, "title

2021-06-21 17:00:59 66

原创 php中树形结构转数组(拉平树结构,保留上下级排序)

前言在做php中树形结构转数组的功能中有时候需要把树结构直接拉平按照树结构的顺序按照由上到下排列,这时候就需要另外一种处理方法了。解决办法//树结构数据转数组(拉平树结构,保留上下级排序)function treeToList($arr, $pid = 0){ $array = array(); foreach ($arr as $val) { $inData = array( "key" => $val["key"],

2021-06-17 16:00:18 48 1

原创 php中获取汉字拼音大写首字母

前言在做项目开发的工程中遇到了要把一串中文字符串返回大写首字母的功能,在借鉴网上其他开发者的方法以后整理了一下最好用的一种方法。问题描述需要把【下游堆石区】转换成【XYDSQ】。方法示例 if (!function_exists('getfirstchar')) { /** * 获取汉字拼音大写首字母 * @param [type] $str * @return void */ funct

2021-06-17 15:30:27 18

原创 php中通过集合collect的方法来实现把某个值插入到数组中指定的位置

需求分析最近在项目开发的过程中遇到列表中的排序要求按照能上下拖动的方式进行重新排序,例如:A,B,C,D,E。现在要把F插入到C后边,然后按照A,B,C,F,D,E进行排序。解决方案经过各种方法的尝试,发现通过集合collect中的一些方法可以快速的实现这个功能。Thinkphp框架中和PHP原生项目可以直接通过composer安装。Laravel8中自带集合Illuminate\Support\Collection方法而可以直接进行使用。//安装集合collect方法composer requ

2021-06-17 15:10:26 84

原创 Laravel8中的find_in_set、upsert的使用方法

前言在laravel8中有时候需要使用FIND_IN_SET原生MySql语句,精准查询特殊字符串是否存在指定字符串中 解决like无法精准匹配问题。例如:type字段,type = 1,11,111。type = 2,22,222。采用like模糊查询的时候无法做到精确匹配,就需要用到FIND_IN_SET精确匹配查询。用法//DB::table('表名')->whereRaw('FIND_IN_SET(?,字段名)',[需要查询的字符串])->get();$type = 1;//

2021-06-01 16:13:55 475 3

原创 Thinkphp5中一个字段对应多个模糊查询

前言最近在开发项目的时候遇到过一个查询条件:需要对一个字段进行多个模糊查询。解决办法 public function getGroupUser($title) { //多个where条件查询 $condition = ['建设单位','监理单位','数字化单位']; $where_supervisor['title'] = array('or'); foreach ($condition as $value) {

2021-06-01 15:45:13 46

原创 Laravel8中保存远程文件到本地文件夹并且打包下载该文件夹中的所有文件

前言最近在项目开发的过程中需要对远程服务器上的文件进行打包下载,由于没有找到其他的方法,暂时想到一种思路来实现功能。1.先把远程服务器上的文件保存到本地服务器上的指定文件夹中。2.对该文件夹进行压缩下载其中的所有文件。实现方式1.安装 guzzle 组件。安装 guzzle 组件需要先安装 composer安装composer2.使用 composer 安装 guzzlephp composer.phar require guzzlehttp/guzzle或者composer r

2021-05-25 15:02:46 302 3

原创 php中过滤字符串只保留汉字、字母、数字,去除空格和其他字符

需求:根据用户输入内容,通过正则过滤出字符,输出汉字、字母、数字,去除空格和其他字符。例如:"T EST-001- 测试 合同编号-9 99-co nect-测试测试111 ",过滤空格和其他字符以后,输出:TEST001测试合同编号999conect测试测试111。分析:采用正确的正则表达式方法,过滤出字符串之中的空格和其他字符,只输出汉字、字母、数字。代码实现 function get_filter_str($str) { preg_match

2021-05-17 10:38:45 239

原创 php中判断版本号是否正确

需求:根据用户输入内容,通过正则判定该内容是否符合规定的版本号格式正确版本号格式为:以数字开头和结尾,数字之间可以用 `.` 连接,但不能连续出现两个及两个以上的点正确版本号示例: 0 0.1 0.1.1 1 1.1 1.1.1 2 2.1 2.1.1 ... 错误版本号示例: 0.. 0..1 1..1 1.0. 1.0..2 ...分析:1.首先对传入的字符串进行是否有两个及以上连续的点出现,若有则版本号不正确,若没有则进入第二步判断。2.首先以 1

2021-05-17 10:15:06 174 1

原创 php中sprintf使用bug

前言最近在用sprintf函数进行四舍五入数据处理的时候的时候,发现一个问题。echo sprintf('%.2f',123.455); //123.45echo sprintf('%.2f',12.455);//12.46上面的sprintf(’%.2f’, $str)是被常认为的四舍五入,但是两个结果截然不同,按照正常情况应该是是输出X.46才对,怎么一个X.46一个X.45呢。sprintf(’%.2f’, $str) 的“四舍五入”输出的问题在php中sprintf经常被用来格式字符串

2021-04-12 10:14:10 71

原创 Laravel8中判断数据库查询出来的数据是否为空

前言在项目开发的过程中有时候需要进行数据库查询验证结果是否为空,不然后续操作会出现报错的问题。//1.使用内置方法 isEmpty()$userItems = User::where('id',1)->get();if ($userItems->isEmpty()) {}//2.使用内置方法 count() 检查有没有记录if (User::where('id',1)->count() > 0) {}//3.使用内置方法 exists() 建议使用该方法$us

2021-03-24 13:55:32 173

原创 php中截取字符串返回前边部分或者后边部分

前言在项目开发的过程中有时候需要进行字符串的截取并且根据情况需要返回前边部分后者后边部分。方法<?php$a = '123_abc';$front = substr($a, 0, strrpos($a, '_'));$after = substr($a, strripos($a, '_') + 1);echo $front; //输出123echo $after; //输出abc...

2021-03-19 09:55:25 208

原创 Windows10+PHP7.4.3环境下安装imagick扩展和imagemagick

前言最近在项目开发的工程中更换了 php 的版本为 php7.4.3,需要重新进行 imagick 扩展和 imagemagick 的安装,以便进行处理文件的相关操作。1.查看当前 php 的版本通过访问 http://127.0.0.1/phpinfo.php 进行 php 版本的查看。2.安装 imagick 扩展扩展的下载地址为:https://windows.php.net/downloads/pecl/releases/imagick/3.4.4/将压缩包下载下来以后进行解压,将

2021-03-10 13:36:40 417

原创 如何修改php的版本

前言在项目开发的过程中有时候需要切换cli中php的版本,那么该如何进行切换呢?1.查看php的版本2.修改计算机环境变量中php中的路径修改为所需要的php版本即可,路径指向php的安装路径。3.重启计算机,不然大概率不会立即生效。重启后查看php的版本。...

2021-03-10 09:50:22 216

原创 opcache缓存设置

前言在 php7.4 版本中有缓存设置,在项目开发的过程中会影响代码调试。opcache.enable 启用操作码缓存,默认为“1”如果禁用此选项,则不会优化和缓存代码。 在运行期使用 ini_set() 函数只能禁用 opcache.enable 设置,不可以启用此设置。 如果在脚本中尝试启用此设置项会产生警告。opcache.enable_cli 仅针对 CLI 版本的 PHP 启用操作码缓存。通常被用来测试和调试。opcache.revalidate_freq=0 检查脚本时

2021-03-05 14:25:31 208

原创 php中使用Fpdf、Fpdi类库合并PDF文件或者合并PNG图片生成新的PDF文件

前言最近遇到了需要把多个PDF文件合并成一个PDF文件、把PNG格式的图片合并生成一个新的PDF文件的需求。解决办法是采用Fpdi类库来实现。 * composer命令安装:composer require setasign/fpdf * composer命令安装:composer require setasign/fpdi<?php//档案管理中的公用方法//引入加载PDF合成多个PDF的扩展vendor('setasign.fpdi.autoload');use setasig

2021-03-01 15:28:00 374

原创 php中使用Imagick扩展方法转换PDF格式的文件为PNG图片

前言:需求中需要对PDF文件做一下操作把PDF文件转换成PNG图片方便后续操作。//pdf文件转png图片function pdf2png($pdf, $path, $page = 0){ $im = new Imagick(); $im->setResolution(120, 120);//设置图像分辨率 $im->setCompressionQuality(100);//压缩比 $im->readImage($pd

2021-03-01 13:41:14 70

原创 php中使用Imagick扩展方法转换TIF格式的文件为PNG图片

前言:最近遇到在页面端预览TIF格式的文件,直接没有办法预览,需要转换成图片的格式进行预览,经过测试以后转换成PNG格式的图片效果最好。//tif文件转png,其实就是使用了Imagick转换了一下文件的格式。//$filename tif文件的地址。function tif2png($filename){ $filepath = pathinfo($filename)['dirname'] . '\\'; $filename = pathinfo($filename)['base

2021-03-01 11:51:48 238

原创 数据库设计规范

数据库设计规范表名和字段名称统一使用下划线方式命名。创建时间(create_time),更新时间(update_time),删除时间(delete_time)必须使用这三个规定的名称,时间相关字段统一使用_time后缀(不允许用_date),并且bigint类型存时间戳不能用int,2038年以后int(11)长度就不够用了。浮点数统一使用float类型,涉及计算的使用decimal类型。一般的数据表引擎使用InnoDB,对于没有事务处理的需求并且查询比较频繁的表使用MyISAM引擎

2021-01-22 11:29:53 14

原创 MySQL中的字符集选择和排序选择

1.字符集说明主要使用utf8与utfmb4,utf8mb4兼容utf8,且比utf8能表示更多的字符,utf8兼容不到emojo表情。2.排序说明utf_bin和utf_general_cibin 是二进制,a 和 A 会别区别对待,例如:SELECT * FROM table WHERE column= 'a'。那么在utf8_bin中你就找不到txt = 'A' 的那一行,而 utf8_general_ci则可以。_ci 结尾是不区分大小写,_cs结尾是区分大小写。utf8_genera

2021-01-04 16:09:32 49

原创 MySQL中的锁实例

表结构:id:自增主键,a:无索引,b:普通索引CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(4) NOT NULL DEFAULT '0', `b` int(4) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `b` (`b`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHAR

2021-01-04 15:37:15 51

原创 MySQL中的事务和锁机制

事务1、Read Uncommitted隔离级别最低的一种事务级别。在这种隔离级别下,一个事务会读到另一个事务更新后但未提交的数据,如果另一个事务回滚,那么当前事务读到的数据就是脏数据,这就是脏读(Dirty Read)。在这个级别下,事务中的update,insert,delete不管有没有提交,都会影响其他事务的select结果2、Read Committed在Read Committed隔离级别下,一个事务可能会遇到不可重复读(Non Repeatable Read)的问题。不可重复读

2021-01-04 15:29:11 28

原创 Laravel7.15.0学习中遇到的坑—日志

前言:最近在学习 laravel 框架,学习的版本是 7.15.0 ,记录一下学习过程中遇到的问题和难点以及一些总结。文章目录前言:日志配置构建日志堆栈日志级别写入日志信息日志配置laravel 框架中日志系统配置位于 config/logging.php 配置文件中,默认情况下使用 stack 记录日志消息。构建日志堆栈'channels' => [ 'stack' => [ 'driver' => 'stack', 'channel

2020-11-11 17:41:35 87

原创 php中的接口 interface 和实现 implement

接口 interface 和实现 implement 的初步理解接口类使用关键字 interface 来定义,且类中所有方法都是抽象方法,修饰符为 public,无声明变量。类通过使用关键字 implement 来实现 interface 中的方法。interface User{ function getGender(); function getLanguage();}class Male implements User{ function getGender

2020-11-11 15:52:32 93

原创 Laravel7.15.0学习中遇到的坑—错误和异常

前言:最近在学习 laravel 框架,学习的版本是 7.15.0 ,记录一下学习过程中遇到的问题和难点以及一些总结。文章目录前言:错误和异常配置异常处理report 方法report 辅助函数render 方法Reportable & Renderable 异常HTTP 异常错误和异常laravel 默认配置了一个错误和异常处理类 app\exceptions\handler 用来记录应用程序处罚的所有异常配置在 config\app.php 文件的 debug 选项中,开发环境 AP

2020-11-11 15:12:19 206

原创 Laravel7.15.0学习中遇到的坑—队列

前言:最近在学习 laravel 框架,学习的版本是 7.15.0 ,记录一下学习过程中遇到的问题和难点以及一些总结。简介Laravel 队列为不同的后台队列服务提供了统一的 API,例如 Beanstalk,Amazon SQS,Redis,甚至其他基于关系型数据库的队列。队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和响应的时间。Redis要使用 redis 队列驱动,需要在配置文件 config/database.php 中配置 Redis 数据库连接。阻塞

2020-11-11 11:17:15 103

原创 Laravel7.15.0学习中遇到的坑—事件

前言:最近在学习 laravel 框架,学习的版本是 7.15.0 ,记录一下学习过程中遇到的问题和难点以及一些总结。注册事件/监听器事件类通常存放在 app/Events 目录,监听器存放在 app/Listeners,初始化框架的时候这些目录并不存在,在服务提供者中 EventServiceProvider 中创建事件,运行 Artisan 命令会自动生成事件和监听器所在的目录。在 App/Providers/EventServiceProvider.php 中添加一个新的 listen 属性包

2020-11-09 14:46:45 59

原创 Laravel7.15.0学习中遇到的坑—集合

前言:最近在学习 laravel 框架,学习的版本是 7.15.0 ,记录一下学习过程中遇到的问题和难点以及一些总结。简介Illuminate\Support\Collection 类为处理数组数据提供了流式、方便的封装。Collection 类允许使用方法链对底层数组执行匹配和移除操作,通常每个 Collection 方法都会返回一个新的 Collection 实例。创建集合//注:默认情况下,Eloquent 查询的结果总是返回 Collection 实例。$collection = col

2020-11-09 09:36:37 71

原创 Thinkphp5中的钩子和行为

前言钩子和行为钩子相当于一个插件,在某些执行顺序上插入进去。行为可以在写app 接口中对所有请求执行到控制器前 执行登录用户的权限判断、登录token验证、发送websocket推送等,这样就不用在每个接口中判断了。注意事项:1.触发行为的关键方法是 Hook 类中的 listen 方法,它通过遍历某个行为标签下的所有行为,依次实例化并调用 run 方法2. listen 方法中,如果之前在配置文件中开启了 DEBUG 模式,则它会生成日志记录你的行为,这里面牵涉到很多的 IO 操作,所以你的项

2020-11-05 18:00:32 47

原创 Laravel7.15.0学习中遇到的坑—Artisan 控制台

前言:最近在学习 laravel 框架,学习的版本是 7.15.0 ,记录一下学习过程中遇到的问题和难点以及一些总结。Artisan 命令行Artisan 是 laravel 自带的命令行接口,thinkphp 中的 think 和它类似,可以通过 list 命令查看所有的命令。php artisan listhelp 指令显示命令描述及命令参数和选项。php artisan help migrateTinker (REPL)所有的 Laravel 应用都提供了 Tinker —— 一个

2020-11-04 17:33:59 143

gs922w64.zip

php 中使用 imagick 把 PDF 文件转成 PNG 图片的时候必备软件。

2021-03-10

ImageMagick 7.0.7 Q16 (64-bit) Setup.zip

ImageMagick 7.0.7 Q16 (64-bit)安装包

2021-03-10

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除