模块下不间断更新,PHP常用方法,欢迎留言!

一、递归删除指定目录下所有文件及文件夹
/**
* 递归删除指定目录下所有文件及文件夹
* @param unknown $path,删除路径
*/
function deleteFileWay($path)
{
//如果是目录则继续
if(is_dir($path)){
//扫描一个文件夹内的所有文件夹和文件并返回数组
$info = scandir($path);
foreach($info as $k=>$v){
//排除目录中的.和..
if($v != '.' && $v != '..'){
if(is_dir($path.$v)){
//子目录中操作删除文件夹和文件
deleteFileWay($path.$v.'/');
//目录清空后删除空文件夹
@rmdir($path.$v.'/');
}else{
//如果是文件直接删除
@unlink($path.$v);
}
}
}
}
} /**
* [result14 description]
* 查找会员下面所有盟主
* 参数$uid会员id
* 返回
* 'status'=>0,没有下级盟主
* 'status'=>1,'data'=>下级盟主id,数组类型
*/
function result14($uid){
$cancel_user_list=$uid.',';//下级所有盟主列表列表,用于sqlin语句
$crt_level_user=pdo_getall('nets_hjk_members', array('from_uid' => $uid), array('type','memberid','level'));
if (empty($crt_level_user)) {
return array('status'=>0,'hint'=>"没有需要变更的下级1");
}
while (!empty($crt_level_user)) {
//从当前用户中提取memberid,用于下一次取下级用户
$crt_level_user_for_sqlin='';
$crt_level_leader_for_sqlin='';
foreach ($crt_level_user as $value) {
$crt_level_user_for_sqlin .= $value['memberid'].',';
//遍历crt_level_user中所有的行,取出盟主的memberid放在$crt_level_leader_for_sqlin中
if ($value['type'] == 1) {
$crt_level_leader_for_sqlin .= $value['memberid'].',';
}
}
$cancel_user_list .= $crt_level_leader_for_sqlin;
//获取当前层级下级用户
if(!empty($crt_level_user_for_sqlin)){
$crt_level_user_for_sqlin=substr($crt_level_user_for_sqlin,0,strlen($crt_level_user_for_sqlin)-1);
}
$crt_level_user=pdo_fetchall("SELECT ex.memberid,ex.type FROM ".tablename('nets_hjk_members')." AS ex where from_uid in(". $crt_level_user_for_sqlin.") ");
}
$junior_user_list = '';
$cancel_user_list = substr($cancel_user_list,0,strlen($cancel_user_list)-1);
$cancel_user_list_arr = explode(",",$cancel_user_list);
//当下会员下级所有的盟主,数组
$cancel_user_list_arr = array_splice($cancel_user_list_arr,1);
if (empty($cancel_user_list_arr)) {
return array('status'=>0,'hint'=>"没有需要变更的下级2");
}else{
return array('status'=>1,'data'=>$cancel_user_list_arr);
}
}

二、数据库常用操作

//插入一条数据
INSERT INTO ims_stat_rule (rid,hit) VALUES (351,990); //删除一条数据
DELETE FROM ims_nets_hjk_applyfor WHERE member_id = 49483; //修改一条数据
update ims_nets_hjk_members set level = 4 where id = 100248; //查询数据
select * from ims_nets_hjk_members where memberid = 18978; //格式化时间戳
FROM_UNIXTIME(M1.created_at,'%Y-%m-%d %H:%i:%s') AS created_at; //SQL中IF的用法,如果表M1时间戳为0则默认为'/',反之则进行格式化时间戳处理
IF(M1.finish_time = 0,'/',FROM_UNIXTIME(M1.finish_time,'%Y-%m-%d %H:%i:%s')) AS finish_time

三、ThinkPHP5.0常用操作

//查询区间内
$device_string = $db->table('ims_nets_hjk_devices')
->where('device_id',['>=',$k],['<=',$j],'AND')
->where('status',0)
->field('device_id')
->limit(50)
->select(); // 如下为CASE的用法-----------------------------
$level = Db::query("SELECT SUM(1) AS '全部用户',SUM(CASE WHEN type=1 AND level= 0 THEN 1 ELSE 0 END) AS '店主',SUM(CASE WHEN type=1 AND level= 1 THEN 1 ELSE 0 END) AS '高级店主',SUM(CASE WHEN type=1 AND level= 2 THEN 1 ELSE 0 END) AS '特约店主',SUM(CASE WHEN type=0 THEN 1 ELSE 0 END) AS '普通用户',SUM(CASE WHEN is_partner=1 THEN 1 ELSE 0 END) AS '合伙人',SUM(CASE WHEN is_insider=1 THEN 1 ELSE 0 END) AS '内部',SUM(CASE WHEN is_city_agent=1 THEN 1 ELSE 0 END) AS '市级代理' FROM ims_nets_hjk_members");
SELECT SUM(CASE WHEN
pay_status = 1 AND
date_format(from_UNIXTIME(`pay_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d') THEN 1 ELSE 0 END
) AS S1,
SUM(CASE WHEN
pay_status = 1 AND
date_format(from_UNIXTIME(`pay_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d') THEN point ELSE 0 END
) AS S2,
SUM(CASE WHEN
pay_status = 1 AND
order_status = 0 THEN 1 ELSE 0 END
) AS S3
FROM ims_integral_order; // 优化一个四表联查,以会员表作为临时表--------------------------
$list = Db::query("
SELECT
M1s.*, M2.avatar AS avatar_is,
M2.avatar AS avatar_is,M2.nickname AS nickname_is,M2.pid AS pid_is,
M3.integral,M3.asset,M3.wallet,
FROM_UNIXTIME(M4.addTime,'%Y-%m-%d %H:%i:%s') AS addTime
FROM
(
SELECT
memberid,pid,avatar,nickname,FROM_UNIXTIME(created_at,'%Y-%m-%d %H:%i:%s') AS created_at,level,type,is_city_agent,is_partner,is_insider,realname,mobile,from_uid
FROM
ims_nets_hjk_members AS M1
WHERE ".$whes."
ORDER BY
created_at DESC
LIMIT ".(($pindex - 1) * $psize).",". $psize."
) AS M1s
LEFT JOIN ims_nets_hjk_members AS M2 ON M1s.from_uid = M2.memberid
LEFT JOIN ims_mc_members AS M3 ON M1s.memberid = M3.uid
LEFT JOIN t_fans_log AS M4 ON M1s.memberid = M4.fans_memberId
"); //TP自加和自减
$res = $this->where('single','gt',0)
    ->update([
        'red_fee'=>['INC',$fee],//自加
        'create_time'=>time(),
        'count'=>['DEC',1],//自减
         ]); //TP大于或者小于
$res = $this->where([
      ['status','=',1],
      ['page_id','>',0]
      ]); //DB操作批量插入
$res = $db->table('ims_nets_hjk_sogo_licence')->insertAll($sogo_licence); //查询指定会员已激活的设备,并且不在ims_nets_hjk_sogo_equipment表里面,EXISTS用法
$list = $db->query("SELECT s_id FROM `ims_nets_hjk_devices`
          WHERE active_member_id = ".$uid."
          AND `status` = 1
          AND NOT EXISTS
            (SELECT s_id FROM ims_nets_hjk_sogo_equipment WHERE s_id = ims_nets_hjk_devices.s_id ) //打印SQL语句
->buildSql();

四、ThinkPHP5.0常用操作

//模拟url传递数组
$url = 'http://niushop.jingjinglego.com/index.php?s=/admin/We7Config/addIndexAd&type=2&adList[0][sort]=456&adList[0][img]=upad/test/1e.jpg&adList[0][outerUrl]=www.bai.com&adList[0][source]=1&adList[1][sort]=456&adList[1][img]=upad/test/1e.jpg&adList[1][outerUrl]=www.bai.com&adList[1][source]=1'; //调用请求类request写法,接受数组
$ids = request->post('ids/a'); //获取参数
use think\Request;
$request = Request::instance();
$method = $request->method();//获取上传方式
$request->param();//获取所有参数,最全
$get = $request->get();//获取get上传的内容
$post = $request->post();//获取post上传的内容
$request->file('file')//获取文件 //错误和正确提示及跳转error/success
$this->error("抱歉你不是最帅的人", __URL__ . "/wap/We7Store/storeManagement"); // 锁定跳转,url重定向
$redirect = __URL(__URL__ . "/wap/login/userlock");
$this->redirect($redirect); 

四、检查字符串是否是URL

//判断是否是url
function is_url($v){
$pattern="#(http|https)://(.*\.)?.*\..*#i";
if(preg_match($pattern,$v)){
return true;
}else{
return false;
}
}

PHP代码篇(三)--常用方法的更多相关文章

  1. phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合

    建议读者,先阅读官方文档,知晓其支付流程之后再来使用此代码,比方客户须要做什么,服务端须要做什么(非常重要!非常重要! 非常重要!),由于这几个篇幅都是纯代码篇,由于阅读前面的入门篇之后看这些应该毫无 ...

  2. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  3. YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法

    上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...

  4. 平衡二叉树,AVL树之代码篇

    看完了第一篇博客,相信大家对于平衡二叉树的插入调整以及删除调整已经有了一定的了解,下面,我们开始介绍代码部分. 首先,再次提一下使用的结构定义 typedef char KeyType; //关键字 ...

  5. TODO:一不顺眼就换字体Go之代码篇

    TODO:一不顺眼就换字体Go之代码篇 image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述:新增字体font,进行 ...

  6. 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  7. 【SSRS】入门篇(三) -- 为报表定义数据集

    原文:[SSRS]入门篇(三) -- 为报表定义数据集 通过前两篇文件 [SSRS]入门篇(一) -- 创建SSRS项目 和 [SSRS]入门篇(二) -- 建立数据源 后, 我们建立了一个SSRS项 ...

  8. Netty实现高性能IOT服务器(Groza)之精尽代码篇中

    运行环境: JDK 8+ Maven 3.0+ Redis 技术栈: SpringBoot 2.0+ Redis (Lettuce客户端,RedisTemplate模板方法) Netty 4.1+ M ...

  9. 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

    好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...

  10. C# webApi上传图片 代码篇

    十年河东,十年河西,莫欺少年穷 学无止境,精益求精 代码篇,不多说 如下: using System; using System.Collections.Generic; using System.D ...

随机推荐

  1. Python 條件式 Condition

    除了重複使用Function,有時我們須檢查結果,依此判斷下個步驟該怎麼進行,如此就需要條件式 condition statement. if ... elif ... ese ( 或 if ... ...

  2. react-native自定义Modal模态框|仿ios、微信弹窗RN版

    前序 纵观每个优质项目,无论web端还是native原生应用开发,弹窗都是不可忽视的一环,能很大程度上直接决定用户体验.如:微信.支付宝.ios都有很成熟的一套弹窗UI展示场景. 最近一直沉迷在rea ...

  3. oracle12.2RAC之OGG安装配置(一)

    前面配置了ACFS用于ogg目录. 上传软件并解压安装: unzip 123014_fbo_ggs_Linux_x64_shiphome.zip cd fbo_ggs_Linux_x64_shipho ...

  4. PyCharm关闭按两次Shift进入搜索框的功能

    1.按Ctrl + Shift + A 弹出搜索框 2.在弹出的搜索框内输入registry(如果汉化了输入“注册”),回车 3.在弹出的窗口中,往下找到“ide.suppress.double.cl ...

  5. ramdisk配置、解压、创建rootfs、启动简单分析

    关键词:ramdisk.rdint..init.ramfs.__initramfs_start.__initramfs_size.rootfs.ramfs.populate_rootfs().gzip ...

  6. C++ 数据类型判断 typeid

    #include <iostream> // typeid testing //////////////////////////////////////////////////////// ...

  7. JavaScript 代码执行顺序

    一.先预处理后执行 在一个JavaScript文件或一个JavaScript代码块的内部,浏览器会先对代码进行预处理(编译),然后再执行. 预处理会跳过执行语句,只处理声明语句,同样也是按从上到下按顺 ...

  8. 基于Django的Rest Framework框架的视图组件

    本文目录 一 基本视图 二 mixin类和generice类编写视图 三 使用generics 下ListCreateAPIView,RetrieveUpdateDestroyAPIView 四 使用 ...

  9. vscode源码分析【二】程序的启动逻辑,第一个窗口是如何创建的

    上一篇文章:https://www.cnblogs.com/liulun/ (小广告:我做的开源免费的,个人知识管理及自媒体营销工具“想学吗”:https://github.com/xland/xia ...

  10. Have a look ^_^

    参考书籍: <重构 改善既有代码的设计 第2版>马丁 福勒著 人民邮电出版社 马丁 福勒的其他著作:<分析模式>,<UML精粹>,<领域特定语言> 目录 ...