首页
📷在线壁纸
🎬娱乐天地
🔖友情链接
更多
📝留言板
Search
1
【javascript】JS-向当前url追加参数
2,343 阅读
2
【PHP】生成随机昵称
2,200 阅读
3
【PHP】判断一个字符串是否属于序列化后的数据
2,022 阅读
4
【css】html+css给文章页,做阅读全文
1,973 阅读
5
【PHP】 设计模式(23种)
1,907 阅读
📂默认分类
💓typecho
🏳️🌈代码改变世界
🍇 mysql
🍈 Winform
🍓 golang
🍉 设计模式
🥝 PHP
🍎 python
🍊 nginx
🍋 网络安全
🍍 javascript
🫑 database
🍡 AI
🍭文艺范
🍏mac
登录
Search
标签搜索
php
typecho
代码注释
redis
mysql
go
golang
nginx
thinkphp
gin
linux
curl
html
mamp
docker
算法
短网址
构造函数
webhook
代码片段
依然范儿特西
累计撰写
141
篇文章
累计收到
1
条评论
首页
栏目
📂默认分类
💓typecho
🏳️🌈代码改变世界
🍇 mysql
🍈 Winform
🍓 golang
🍉 设计模式
🥝 PHP
🍎 python
🍊 nginx
🍋 网络安全
🍍 javascript
🫑 database
🍡 AI
🍭文艺范
🍏mac
页面
📷在线壁纸
🎬娱乐天地
🔖友情链接
📝留言板
搜索到
141
篇与
的结果
2021-06-07
【Sql】mysql whereIn根据查询id排序
mysql in根据查询id排序mysql in根据查询时,返回结果是自行排序的,如果要按照我们查询的ID进行排序,要用到order by field,下面用几个例子来说明一下mysql in查询排序SQL:select * from laofan_table where id IN (3,6,9,1,2,5,8,7);这样的情况取出来后,其实,id还是按1,2,3,4,5,6,7,8,9,排序的,但如果我们真要按IN里面的顺序排序怎么办?我们可以用order by fieldSQL: select * from laofan_table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7);查询出来的结果就是按自定义的ID进行排序了.orm 用法$ret = Db::table('laofan') ->field('*') ->whereIn('id',$ids) ->order('id',$ids) ->select() ->toArray();
2021年06月07日
191 阅读
0 评论
0 点赞
2021-06-05
重新自定义typecho头像
看看以前的QQ头像替代默认的Gavatar头像功能,感觉不是很理想。因为当访客使用QQ邮箱评论时会显示QQ头像,可是如果使用的不是QQ头像,就会显示一个QQ企鹅头像,这样子在我看来是不行的。于是又萌生了修改的想法。首先,将下面的代码丢到funtions.php文件当中。//获取Gravatar头像 QQ邮箱取用qq头像 function getGravatar($email, $s = 96, $d = 'mp', $r = 'g', $img = false, $atts = array()) { preg_match_all('/((\d)*)@qq.com/', $email, $vai); if (empty($vai['1']['0'])) { $url = 'https://www.gravatar.com/avatar/'; $url .= md5(strtolower(trim($email))); $url .= "?s=$s&d=$d&r=$r"; if ($img) { $url = '<img src="' . $url . '"'; foreach ($atts as $key => $val) $url .= ' ' . $key . '="' . $val . '"'; $url .= ' />'; } }else{ $url = 'https://q2.qlogo.cn/headimg_dl?dst_uin='.$vai['1']['0'].'&spec=100'; } return $url; }其次,再将下面的代码复制到需要放头像的页面,通常是comments.php页面和sidebar.php页面。 <?php $email=$comments->mail; $imgUrl = getGravatar($email);echo '<img src="'.$imgUrl.'" width="45px" height="45px" style="border-radius: 50%;" >'; ?> 大功告成!该代码可以实现的功能:当客户评论时用的不是QQ邮箱,则显示gavatar头像,否则则显示QQ头像。完美!
2021年06月05日
245 阅读
0 评论
0 点赞
2021-06-04
【PHP】获取上周、本周、上月、本月、本季度、上季度、上年、本年时间方法大全
/** * 根据类型获取时间格式 * @param $time_type : 1年; 2季度; 3月; 4周; 5日; * @return time_start 开始时间 * @return time_end 结束时间 */ function sys_get_time_around($time_type) { $now_start = 0; $now_end=0; $last_start= 0; $last_end = 0; $now_time = time(); switch ($time_type) { case 'year': //今年 $now_start = mktime(0,0,0,1,1,date('Y')); $now_end = mktime(23,59,59,12,31,date('Y')); //去年 $last_start = mktime(0,0,0,1,1,date('Y')-1); $last_end = mktime(23,59,59,12,31,date('Y')-1); break; case 'quarter': $season = ceil((date('n'))/3)-1;//上季度是第几季度 //本季度 $now_season = ceil((date('n'))/3);//当月是第几季度 $now_start = mktime(0, 0, 0,$now_season*3-3+1,1,date('Y')); $now_end = mktime(23,59,59,$now_season*3,date('t',mktime(0, 0 , 0,$now_season*3,1,date("Y"))),date('Y')); //上一季度 $last_season = ceil((date('n'))/3)-1;//上季度是第几季度 $last_start = mktime(0, 0, 0,$last_season*3-3+1,1,date('Y')); $last_end = mktime(23,59,59,$last_season*3,date('t',mktime(0, 0 , 0,$last_season*3,1,date("Y"))),date('Y')); break; case 'month': //本月 $now_start = mktime(0,0,0,date('m'),1,date('Y')); $now_end = mktime(23,59,59,date('m'),date('t'),date('Y')); //上月 $last_start = mktime(0,0,0,date('m')-1,1,date('Y')); $last_end = mktime(23,59,59,date('m'),0,date('Y')); break; case 'week': //mktime 是从周日开始算,结束时间是周六 //本周 // $now_start = mktime(0,0,0,date('m'),date('d')-date('w')+1,date('Y')); // $now_end = mktime(23,59,59,date('m'),date('d')-date('w')+7,date('Y')); // //上周 // $last_start = mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y')); // $last_end = mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y')); //本周 $now_start = strtotime(date("Y-m-d 00:00:00",strtotime("this week Monday",$now_time ))); $now_end = strtotime(date("Y-m-d 23:59:59",strtotime("this week Sunday",$now_time ))); //上周 $last_start = strtotime(date("Y-m-d 00:00:00",strtotime("last week Monday",$now_time ))); $last_end = strtotime(date("Y-m-d 23:59:59",strtotime("last week Sunday",$now_time ))); break; case 'day': //今日 $now_start = mktime(0,0,0,date('m'),date('d'),date('Y')); $now_end = mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1; //昨日 $last_start = mktime(0,0,0,date('m'),date('d')-1,date('Y')); $last_end = mktime(23,59,59,date('m'),date('d')-1,date('Y')); break; default: # code... break; } $retult = [ 'time_type'=>$time_type, 'now_start'=>date('Y-m-d H:i:s',$now_start), 'now_end'=>date('Y-m-d H:i:s',$now_end), 'last_start'=>date('Y-m-d H:i:s',$last_start), 'last_end'=>date('Y-m-d H:i:s',$last_end), ]; return $retult; } 调用 $a = sys_get_time_around('week'); print_r($a);exit;此处一定要注意,本周和上周的时候,mktime是从 周日到周六,避免被坑
2021年06月04日
1,558 阅读
0 评论
1 点赞
2021-06-04
【PHP】 如何避免在foreach 里查询数据库
<?php ### 如何避免在foreach 里查询数据库 /** * 场景: * 商品表: goods * goods_id 商品ID * goods_name 商品名称 * brand_id 品牌id * 品牌表: brand * brand_id * brand_name **/ //此时我们已经得到一组数据,想到拿到品牌名称(此处为了演示。不考虑链表查询的情况下) $data_list = [ [ 'id'=>1, 'goods_id'=>1, 'goods_name'=>'老范测试', 'brand_id'=>1, //或许会拿更多字段,比如 产地,规格,等等 ], //-----或许更多数据 ]; /** * 错误示例 * 在业务量大的情况下。此处会多次读取数据库。增加数据库压力 */ foreach ($data_list as $key => $value) { $brand_mes = Db::table('brand')->field('name')->where(['id'=>$value['brand_id']])->find() if(!empty($brand_mes)){ $data_list[$key]['brand_name'] = $brand_mes['name']; }else{ $data_list[$key]['brand_name'] = '老范品牌'; //此处给一个默认值 } } /** * 建议使用以下用法,数据库查询一次,把其他操作放在内存里,以减少数据库IO * */ $brand_id_str = array_column($data_list,'brand_id'); //查询当前品牌ID包含所有品牌信息 $brand_list = Db::table('brand')->field('id,name')->whereIn('id',$brand_id_str)->select() $res_brand_array = []; if(!empty($brand_list)){ foreach ($brand_list as $k => $v) { // brand_id => brand_name 以这种形式存储,便于读取 $res_brand_array[$v['id']]=$v['name']; } } //最后组装数据 foreach ($data_list as $key => $value) { if(isset($res_brand_array[$value['brand_id']]) && !empty($res_brand_array[$value['brand_id']])){ $data_list[$key]['brand_name'] =$res_brand_array[$value['brand_id']; }else{ $data_list[$key]['brand_name'] = '老范品牌'; //此处给一个默认值 } //此处也可以增加其他字段的判定操作 } ?>
2021年06月04日
170 阅读
0 评论
2 点赞
2021-06-02
【javascript】JS-向当前url追加参数
var cate_id = 3; //当前url 追加参数 var newurl = updateQueryStringParameter(window.location.href, 'cate_id', cate_id); window.location.href = newurl; //当前url 追加参数 function updateQueryStringParameter(uri, key, value) { if(!value) { return uri; } var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); var separator = uri.indexOf('?') !== -1 ? "&" : "?"; if (uri.match(re)) { return uri.replace(re, '$1' + key + "=" + value + '$2'); } else { return uri + separator + key + "=" + value; } }
2021年06月02日
2,343 阅读
0 评论
1 点赞
2021-05-26
【PHP】抽奖算法
传入一个概率。得出是否中奖
2021年05月26日
1,709 阅读
0 评论
1 点赞
2020-03-31
【PHP】php实现的无限极分类
上代码<?php $rows = array( array( 'id' => 1, 'name' => 'dev', 'parentid' => 0 ), array( 'id' => 2, 'name' => 'php', 'parentid' => 1 ), array( 'id' => 3, 'name' => 'thinkphp', 'parentid' => 2 ), array( 'id' => 4, 'name' => 'life', 'parentid' => 0 ), array( 'id' => 5, 'name' => 'pdo', 'parentid' => 2 ), array( 'id' => 6, 'name' => 'pdo-mysql', 'parentid' => 5 ), array( 'id' => 7, 'name' => 'java', 'parentid' => 1 ) ); $tree=build_tree($arr,0); print_r($tree); function build_tree($rows,$root_id){ $childs=findChild($rows,$root_id); if(empty($childs)){ return null; } foreach ($childs as $k => $v){ $rescurTree=build_tree($rows,$v['id']); if( null != $rescurTree){ $childs[$k]['childs']=$rescurTree; } } return $childs; } function findChild($arr,$id){ $childs=array(); foreach ($arr as $k => $v){ if($v['parentid']== $id){ $childs[]=$v; } } return $childs; } ?>
2020年03月31日
1,502 阅读
0 评论
0 点赞
2020-02-22
【PHP】判断一个字符串是否属于序列化后的数据
function is_serialized( $data ) { $data = trim( $data ); if ( 'N;' == $data ) return true; if ( !preg_match( '/^([adObis]):/', $data, $badions ) ) return false; switch ( $badions[1] ) { case 'a' : case 'O' : case 's' : if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) ) return true; break; case 'b' : case 'i' : case 'd' : if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) ) return true; break; } return false; }
2020年02月22日
2,022 阅读
0 评论
0 点赞
2020-02-22
【PHP】获取汉字首字母大写
封装方法
2020年02月22日
1,166 阅读
0 评论
0 点赞
2020-02-22
【PHP】限制IP访问,授权IP,授权域名,支持单个,多个,通配符,IP段,支持黑白名单
其中 ip2long 为php内置函数,将IPv4的ip地址(以小数点分隔形式)转换为int
2020年02月22日
1,230 阅读
0 评论
0 点赞
1
...
9
10
11
...
15