备忘常用方法  

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. 浅析python 的import 模块(转)

    摘要: 学习python有几天了,对import一直不是很清楚,和C里面的include是否一样,重复引入有问题么?搜索路径是怎样的?整理解决下我的疑问. 一 模块的搜索路径 模块的搜索路径都放在了s ...

  2. Redis数据类型之ZSet(五)

    前言:有序集合zset跟其他类型一样,同样有几种编码方式.主要有两种编码方式,REDIS_ENCODING_ZIPLIST和REDIS_ENCODING_SKIPLIST.ziplist可以表示较小的 ...

  3. javascript编程解决黑白卡片问题

    问题描述: 时间限制:1秒 空间限制:32768K 牛牛有n张卡片排成一个序列.每张卡片一面是黑色的,另一面是白色的.初始状态的时候有些卡片是黑色朝上,有些卡片是白色朝上.牛牛现在想要把一些卡片翻过来 ...

  4. fiddler 抓取手机app请求包

    今天心血来潮,也不知道怎么了,想着抓抓我们公司手机app的包看看,研究研究我们公司的接口,哎,我们api文档,我自己抓包看看吧.工具选择fiddler,理由免费,用着也舒服,手机设备 iPhone6 ...

  5. docker - 设置HTTP/HTTPS 代理

    背景 将docker的服务器环境切换到新的网络之后,由于服务器的internet是受限制的(需要连接配置远程代理,不能直接上网).因此,在使用docker连接docker hub 的时候,就会出错: ...

  6. (1)xcode基本设置和控制器等介绍

    1.在IOS应用程序中,如果没有对storyBoard进和设置它的界面是非常大,有时候如果把元素放在右边会出现运行程序时超出显示界面而不显示的问题.为了解决这个问题我们通常会在用模拟器设置调试界面的时 ...

  7. MyBatis String类型传递参数注意事项

    Mybatis查询sql传入一个字符串传参数,报There is no getter for property named 'ids' in 'class java.lang.String'. 后来改 ...

  8. IntelliJ IDEA javaDoc的使用

    文档注释的风格看个人主要说一下在idea中如何配置和使用快捷的文档注释 1.想像Eclipse一样使用 /**来写文档注释可以通过settings下的Live Templates来设置如下图所示 ja ...

  9. Fluent Validation with Web Api 2

    using FluentValidation;using FluentValidation.Attributes;using System;using System.Collections.Gener ...

  10. 第一个简单的python程序,模拟购物车

    第一个pyhone程序,简单的购物车功能,刚开始学习,练习下手感. #/usr/bin/env python#-*- coding:utf-8 -*- salary = int(raw_input(& ...