杂记整理三:php、thinkphhp和sql

php 循环,v为键,c为值

$list = array( "aaa"=>"ttt", "bbb"=>"sss" );

foreach($list as $v => $c){
    echo $v;
    echo $c;
};

生成定长的62进制随机码(0-9, a-z, A-Z)

function getRandom($param){
    $str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $key = "";

    for($i=0;$i<$param;$i++)
    {
        $key .= $str{mt_rand(0,32)}; //生成php随机数
    }

    return $key;
}

sql 递归查询

 SELECT SORT_ID AS ID,SORT_PARENT AS 父ID ,levels AS 父到子之间级数, paths AS 父到子路径 FROM (
     SELECT SORT_ID,SORT_PARENT,
     @le:= IF (SORT_PARENT = 0 ,0,
         IF( LOCATE( CONCAT(‘|‘,SORT_PARENT,‘:‘),@pathlevel)   > 0  ,
                  SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT(‘|‘,SORT_PARENT,‘:‘),-1),‘|‘,1) +1
        ,@le+1) ) levels
     , @pathlevel:= CONCAT(@pathlevel,‘|‘,SORT_ID,‘:‘, @le ,‘|‘) pathlevel
      , @pathnodes:= IF( SORT_PARENT =0,‘,0‘,
           CONCAT_WS(‘,‘,
           IF( LOCATE( CONCAT(‘|‘,SORT_PARENT,‘:‘),@pathall) > 0  ,
               SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT(‘|‘,SORT_PARENT,‘:‘),-1),‘|‘,1)
              ,@pathnodes ) ,SORT_PARENT  ) )paths
    ,@pathall:=CONCAT(@pathall,‘|‘,SORT_ID,‘:‘, @pathnodes ,‘|‘) pathall
        FROM  flow_sort,
    (SELECT @le:=0,@pathlevel:=‘‘, @pathall:=‘‘,@pathnodes:=‘‘) vv
    ORDER BY  SORT_PARENT,SORT_ID
    ) src
ORDER BY SORT_ID

php 二维数组去掉重复值,保留键值,恢复行索引,自动修改列索引,如果只有小于2行(没有排序的必要),则直接返回原数组。

protected function array_unique_fb($array2D){

    if(count($array2D)>1){
        $keyarr = [];
        foreach($array2D[0] as $k => $v){
            $keyarr[] = $k;
        }
foreach ($array2D as $k=>$v){
            $v=join(‘,‘,$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
            $temp[$k]=$v;
        }
        $temp=array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
        foreach ($temp as $k => $v){
            $array=explode(‘,‘,$v); //再将拆开的数组重新组装
            //(下面的索引根据自己的情况进行修改即可)
            //自动回复索引

            foreach($keyarr as $sk => $sv){
                $temp2[$k][$sv] =$array[$sk];
            }
        }

        $temp2 = array_values($temp2);

    }else{
        $temp2 = $array2D;
    }

return $temp2;
}

对页面进行缓存

function pageCache($siteId,$page = ‘‘,$expire = 7200){
    $siteId = $siteId?:1;
    $fileName = $siteId.‘.html‘;
    $filePath = CACHE_PATH.$fileName;

    if($page){
        file_put_contents($filePath,$page);
    }else{
        if(file_exists($filePath)){
            $editTime =  fileatime($filePath);
            $page = ‘‘;
            if((time() - $editTime) <= $expire){
                $page =  file_get_contents($filePath);
            }
        }
    }
    if($page){
        echo $page;
        exit;
    }
}

数组输出json,注意如果有跨域操作(如有api站点)需要加跨域的HTTP头

$arr = [
    ‘haha‘  => 15,
    ‘tata‘  => ‘shiningsun‘,
    ‘lala‘  => [15,16],
];

header("Access-Control-Allow-Origin:*");

$result = json_encode($arr);

php 遍历文件名

/***********************
用readdir()函数
 ************************/
function listDir($dir)
{
    if(is_dir($dir))
    {
        if ($dh = opendir($dir))
        {
            $arr = array();
            while (($file = readdir($dh)) !== false)
            {
                if((is_dir($dir."/".$file)) && $file!="." && $file!="..")
                {
                    $arr[$file] = listDir($dir."/".$file."/");
                }
                else
                {
                    if($file!="." && $file!="..")
                    {
                            $arr[$file] = get_extension($file);
                    }

                }
            }
            closedir($dh);

            return $arr;
        }
    }
}

/***********************
获取文件扩展名
 ************************/
function get_extension($file)
{
    return pathinfo($file, PATHINFO_EXTENSION);
}

从url中读取页面信息

$url=‘http://school.51cce.dev/klzhhdx/news/‘;
$use_include_path = false;
$context = null;
$offset = -1;
$contents = file_get_contents($url, $use_include_path, $context, $offset);

dump($contents);

thinkphp 5.0 写法总结:

接收参数

Request::instance()->post(‘qq‘) && $data[‘QQ‘]                    = Request::instance()->post(‘qq‘);
Request::instance()->post(‘email‘) && $data[‘Email‘]              = Request::instance()->post(‘email‘);
Request::instance()->post(‘mobile‘) && $data[‘ContactsTel‘]       = Request::instance()->post(‘mobile‘);

判断是否有post值(get同理)

if(Request::instance()->isPost())
时间: 2024-10-07 13:08:33

杂记整理三:php、thinkphhp和sql的相关文章

浅析RAC下SPFILE文件修改之整理三篇文章

关于RAC下spfile浅析_整理于_2014.4.17 第一篇:RAC下SPFILE文件修改 在RAC下spfile位置的修改与单节点环境不完全一致,有些地方需要特别注意,否则可能修改会失败. 下面用一个例子说明:SPFILE放在ASM中一个不正确的目录(+ARCH)中,现在想把它放在另外一个目录(+DBSYS)下. 以下是具体步骤: 1. 原spfile位置 SQL> show parameter spfile NAME TYPE VALUE ------------------------

算法整理(三):插入排序

插入排序很简单,就像打扑克.手里有个牌4,再来一张牌5就本能的放到第一个牌的右边.如果来了个3就从右往左扫描,只要左边的比这个待插入数字大就交换. 插入排序是一种稳定的排序方法,时间复杂度O(n*n),空间复杂度O(1),最好的情况下时间复杂度为O(1).即本来就是一个有序或者相等的数组,则只需比较n-1次即可.下为源码,只需三行代码即可. //============================================================================

oracle学习 第三章 常用的SQL*PLUS命令 ——02

今天接着昨天的RUN命令继续讲. 3.5 n(设置当前行)命令和A(PPEND)(附加)命令 设想,你输入了例3-10的查询语句 例 3-10 SQL> SELECT ename 2 FROM emp; 例 3-10 结果 看到以上输出时,您发现在SELECT子句中忘了job,sal.这时您又如何修改您的SELECT子句呢?首先您应该使用SQL*PLUS的L(LIST)命令来显示SQL缓冲中的内容. 例 3-11 SQL> L 例 3-11 结果 在例3-11显示的结果中,2后面的"

三个有用的SQL辅助工具

编写人:CC阿爸 2015-1-23 工欲善其事必先利其器,今天在这里,我想与大家一起分享三个有用的SQL辅助工具.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 相信大家在平时的开发项目中,肯定遇到过,对表或表的字段记录清的问题,如果SQL有智能提示功能岂不妙哉,不用担心,早有人帮我们开发出了此类工具,在这个互联网的时代,只有想不到的,没有做不到的.这不在SQL 2008就引进了智能提示功能,但微软做的又不够好,提示速度超慢不说,还不能进行格式操作,在VS中都有代码的格式化功能,不知为何

mysql优化(三)–explain分析sql语句执行效率

mysql优化(三)–explain分析sql语句执行效率 mushu 发布于 11个月前 (06-04) 分类:Mysql 阅读(651) 评论(0) Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句. Explain语法:explain select … from … [where …] 例如:explain select * from

《Maven实战》整理三:坐标和依赖

1.1 何为Maven坐标 正如之前所说的,Maven的一大功能就是管理项目依赖.为了能自动化地解析任何一个Java构件,Maven就必须将它们唯一标识,这就依赖管理的底层基础——坐标. 1.2 坐标详解 Maven坐标的元素包括:groupId,artifactId.version.packaging.classifier.先看一组坐标定义,如下: <groupId>org.sonatype.nexus</groupId> <artifactId>nexus-inde

mysql学习笔记(三)--- 基本的SQL语句

[正文] 主要内容: 一.cmd命令行的常用命令 二.数据定义语言(DDL) 三.数据操纵语言(DML) 四.数据查询语言(DRL) 五.事务控制语言(TCL) 一.cmd命令行的常用命令: 当我们使用MySQL 5.5 Command Line Client这个客户端登陆时,只能登陆root用户.如果今后创建了别的用户,就很麻烦了,所以我们不用MySQL 5.5 Command Line Client这个客户端,而是直接使用cmd. 登录MySQL数据库: 因为在这之前安装MySQL的时候,已

MyBatis学习(三)、动态SQL语句

三.动态SQL语句 有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息.使用Oracle的序列.mysql的函数生成Id.这时我们可以使用动态sql. 下文均采用mysql语法和函数(例如字符串链接函数CONCAT). 3.1 selectKey 标签 在insert语句中,在Oracle经常使用序列.在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键.使

第三章: 简单Sql语句介绍

SQL概述 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统:同时也是数据库脚本文件的扩展名. 从上可以看出我们数据库相关工作职位大概两种:DBD和DBA DBD:数据库开发 DBA:数据库管理 SQL 是1986年10 月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准.1989年4月,ISO提出了具