备忘常用方法  

1.寻找子栏目(权限\菜单列表。。。)


  function getSon($list,$pid){


    $arr='';
foreach ($list as $k=>$v){
if($v['pid']==$pid){
$v['son']=getSon($list,$v['id']);
$arr[]=$v; } }
return
$arr;
}

2.删除文件
private function _deleteDir($R){
//打开一个目录句柄
$handle = opendir($R);
//读取目录,直到没有目录为止
while(($item = readdir($handle)) !== false){
//跳过. ..两个特殊目录
if($item != '.' and $item != '..'){
//如果遍历到的是目录
if(is_dir($R.'/'.$item)){
//继续向目录里面遍历
$this->_deleteDir($R.'/'.$item);
}else{
//如果不是目录,删除该文件
if(!unlink($R.'/'.$item))
die('error!');
}
}
}
//关闭目录
closedir( $handle );
//删除空的目录
return rmdir($R);
}

3.正则匹配百度首页logo地址

//获取百度logo图片地址
$url="https://www.baidu.com";
$f=file_get_contents($url);
preg_match_all("<img.*?src=\"(.*?.*?(logo).*?)\".*?>",$f,$match);
foreach($match[1] as $val){
echo $val;
echo "</br>";
}

3.1   常见邮箱验证规则:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$


4.图片上传

function saveAvatar($content) {
global $_W;
if (empty($content)) {
$this->exitJson("图片未找到", 1);
}
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $content, $result)) {
$type = $result[2];
$img = base64_decode(str_replace($result[1], '', $content));
} else {
$img = base64_decode($content);
$type = "jpg";
}
$fileUrl = "attachment/images/" . $_W['uniacid'] . "/" . date("Y") . "/" . date("m") . "/";
if(!is_dir(IA_ROOT ."/".$fileUrl)){
mkdir(IA_ROOT ."/".$fileUrl,0777);
}
$imageName = random(15) . time() . "." . $type;
$size = file_put_contents(IA_ROOT . "/" . $fileUrl . $imageName, $img);
if ($size > 2 * 1024 * 1024) {
$this->exitJson("图片过大!", 1);
}
return $_W['siteroot'] . $fileUrl . $imageName;
} 5.查找下级id(递归)
function getSubs($id, $includeSelf = true){
static $ids = [];
if($includeSelf) {
if(!in_array($id, $ids)) {
array_push($ids, $id);
}
}
$subIds = M('user')
->field('user_id')
->select();
$subIds = array_column($subIds, 'user_id');
$ids = array_unique(array_merge($ids, $subIds));
foreach($subIds as $sub_id) {
getSubs($sub_id, $includeSelf);
} return $ids;
}

5.2 递归查找下级(循环)

function getSubIds($userID, $includeSelf = true){
$userIDs = [$userID];
while (true) {
$subIDs = M('user')
->field('user_id')
->where(['pid' => ['IN', $userIDs]])
->select();
$subIDs = array_column($subIDs, 'user_id');
$userCount = count($userIDs);
$userIDs = array_unique(array_merge($userIDs, $subIDs));
if ($userCount == count($userIDs)) {
break;
}
}
if (!$includeSelf) {
for ($i = 0; $i < count($userIDs); ++$i) {
if ($userIDs[$i] == $userID) {
array_splice($userIDs, $i, 1);
break;
}
}
} return $userIDs;
}

6. php 命令行下执行定时任务:php index.php /crontab/index/cron

  

7. 判断是不是同一条线的用户

/**
* 检测是不是同一条线
* @param $uid
* @param $pid
* @param int $depth
* @return bool
*/
function checkIsBelong( $uid , $pid , $depth = )
{ if ( $uid == $pid && $depth > ) {
return true;
} $uid = query_user ( $uid , 'ue_accname' );
if ( !empty($uid) ) {
return checkIsBelong ( $uid , $pid , $depth + );
} return false;
} //获取用户信息
function query_user( $uid , $field = false )
{
$model = M ( 'user' );
if ( $field ) {
$arr_info = $model->field ( $field )->where ( [ 'UE_account' => $uid ] )->find ();
return $arr_info[ $field ];
} else {
$arr_info = $model->where ( [ 'UE_account' => $uid ] )->find ();
return $arr_info;
}
}
 

php工具方法的更多相关文章

  1. JQuery操作类数组的工具方法

    JQuery学习之操作类数组的工具方法 在很多时候,JQuery的$()函数都返回一个类似数据的JQuery对象,例如$('div')将返回div里面的所有div元素包装的JQuery对象.在这中情况 ...

  2. jQuery工具方法

    目录 常用工具方法 判断数据类型的方法 Ajax操作 $.ajax 简便写法 Ajax事件 返回值 JSONP 文件上传 参考链接 jQuery函数库提供了一个jQuery对象(简写为$),这个对象本 ...

  3. jQuery晦涩的底层工具方法们

    这里整理的是jQuery源码中一些比较晦涩难懂的.内部的.最底层的工具方法,它们多为jQuery的上层api方法服务,目前包括: jQuery.access jQuery.access: functi ...

  4. angular的工具方法笔记(equals, HashKey)

    分别是angular脏值检测的工具方法equals和 类HashKey的使用方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ...

  5. zepto源码学习-02 工具方法-详细解读

    上一篇:地址 先解决上次留下的疑问,开始看到zepto.z[0]这个东西的时候,我很是不爽,看着它都不顺眼,怎么一个zepto的实例对象var test1=$('#items');  test__pr ...

  6. jQuery源代码 解析一 工具方法

    1. 外层沙箱以及命名空间$ 几乎稍微有点经验前端人员都这么做,为了避免声明了一些全局变量而污染,把代码放在一个"沙箱执行",然后在暴露出命名空间(可以为API,函数,对象): 2 ...

  7. Underscore.js 常用类型判断以及一些有用的工具方法

    1. 常用类型判断以及一些有用的工具方法 underscore.js 中一些 JavaScript 常用类型检查方法,以及一些工具类的判断方法. 首先我们先来谈一谈数组类型的判断.先贴出我自己封装好的 ...

  8. 秒味课堂Angular js笔记------Angular js中的工具方法

    Angular js中的工具方法 angular.isArray angular.isDate angular.isDefined angular.isUndefined angular.isFunc ...

  9. javascript 的工具方法 --- 类型判断

    Javascript中常见类型对象有: Boolean, Number, String, Function, Array, Date, RegExp, Object, Error, Symbol等等. ...

  10. JavaScript 深入学习及常用工具方法整理 ---- 01.浮点数

    在JavaScript中是不区分整数值和浮点数值的,其中所有的数字均用浮点数值表示.JavaScript采用IEEE 754标准(有兴趣可以浏览网络规范分类下的IEEE 754标准,需要原文件请在留言 ...

随机推荐

  1. hadoop系列三:mapreduce的使用(一)

    转载请在页首明显处注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/7224772.html 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的 ...

  2. 10. leetcode 226 Invert Binary Tree

    思路:递归.先将左子树反转,再将右子树反转,然后让root->left指向反转后的右子树,root->right指向反转后的左子树.

  3. Uva140 Bandwidth 全排列+生成测试法+剪枝

    参考过仰望高端玩家的小清新的代码... 思路:1.按字典序对输入的字符串抽取字符,id[字母]=编号,id[编号]=字母,形成双射       2.邻接表用两个vector存储,存储相邻关系     ...

  4. attr(),addClass()使用方法练习

    这次我主要是想要完成2个li之间样式的变化.方法比较傻,如果有人有更好的办法或者有别问题,希望可以不吝指教. <!DOCTYPE html><html> <head> ...

  5. android四大组件学习总结以及各个组件示例(1)

    android四大组件分别为activity.service.content provider.broadcast receiver. 一.android四大组件详解 1.activity (1)一个 ...

  6. 社群系统ThinkSNS + 移动端研发周报

    社群系统"ThinkSNS+"对比ThinkSNS V4系列,ThinkSNS V4系列的产品规划主要偏重于企业服务应用,注重功能的覆盖面和用户关系的逻辑处理.Thin社群系统kS ...

  7. 使用Maven来创建WEB项目

    IDE: Eclipse Tool:Maven 1. 下载JDK,配置java环境变量 2.下载Maven,配置Maven环境变量 3. 利用Maven来创建WEB项目 (1)按照下面的截图流程创建m ...

  8. Hadoop-2.8.0 开发环境搭建(Mac)

    Hadoop是一个由Apache基金会开发的分布式系统架构,简称HDFS,具有高容错性.可伸缩性等特点,并且可以部署在低配置的硬件上:同时,提供了高吞吐量的数据访问性能,适用于超大数据集的应用程序,以 ...

  9. # Consumed parameters

    consumed这个单词我并不能给出很准确的翻译,在这篇文章中,我把Consumed parameters称为耗用参数,它在OC中有着独特的应用场景. 在https://clang.llvm.org/ ...

  10. spring-aop的简单实例注解版

    项目结构如图,基本的spring的配置就不在赘述 1.首先编写自定义的切面类 package org.wu.test; import org.aspectj.lang.annotation.After ...