//二分查找
function bin_sch($array, $low, $high, $k)
{
    if ($low <= $high) {
        $mid = intval(($low + $high) / 2);
        if ($array[$mid] == $k) {
            return $mid;
        } elseif ($k < $array[$mid]) {
            return bin_sch($array, $low, $mid - 1, $k);
        } else {
            return bin_sch($array, $mid + 1, $high, $k);
        }
    }
    return -1;
}
 

 
//顺序查找(数组里查找某个元素)
function seq_sch($array, $n, $k)
{
    $array[$n] = $k;
    for ($i = 0; $i < $n; $i++) {
        if ($array[$i] == $k) {
            break;
        }
    }
    if ($i < $n) {
        return $i;
    } else {
        return -1;
    }
}
 

 
//线性表的删除(数组中实现)
function delete_array_element($array, $i)
{
    $len = count($array);
    for ($j = $i; $j < $len; $j++) {
        $array[$j] = $array[$j + 1];
    }
    array_pop($array);
    return $array;
}

//冒泡排序(数组排序)
function bubble_sort($array)
{
    $count = count($array);
    if ($count <= 0) return false;
    for ($i = 0; $i < $count; $i++) {
        for ($j = $count - 1; $j > $i; $j--) {
            if ($array[$j] < $array[$j - 1]) {
                $tmp = $array[$j];
                $array[$j] = $array[$j - 1];
                $array[$j - 1] = $tmp;
            }
        }
    }
    return $array;
}

 

 
//快速排序(数组排序)
function quick_sort($array)
{
    if (count($array) <= 1) return $array;
    $key = $array[0];
    $left_arr = array();
    $right_arr = array();
    for ($i = 1; $i < count($array); $i++) {
        if ($array[$i] <= $key)
            $left_arr[] = $array[$i];
        else
            $right_arr[] = $array[$i];
    }

$left_arr = quick_sort($left_arr);

    $right_arr = quick_sort($right_arr);
    return array_merge($left_arr, array($key), $right_arr);
}
 

//获得文件属性 $file是文件路径如$_SERVER['SCRIPT_FILENAME'],$flag文件的某个属性
function getFileAttr($file, $flag)
{
    if (!file_exists($file)) {
        return false;
    }
    switch ($flag) {
        case 'dir':
            if (is_file($file))
                return dirname($file);
            return realpath($file);
            break;
        case 'name':
            if (is_file($file))
                return basename($file);
            return '-';
            break;
        case 'size':
            if (is_file($file))
                return filesize($file);
            return '-';
            break;
        case 'perms':
            return substr(sprintf('%o', fileperms($file)), -4);;
            break;
        case 'ower':
            return fileowner($file);
            break;
        case 'owername':
            $ownerInfo = posix_getpwuid(fileowner($file));
            return isset($ownerInfo['name']) ? $ownerInfo['name'] : false;
            break;
        case 'groupname':
            $ownerInfo = posix_getpwuid(filegroup($file));
            return isset($ownerInfo['name']) ? $ownerInfo['name'] : false;
            break;
        case 'ctime':
            return filectime($file);
            break;
        case 'mtime':
            return filemtime($file);
            break;
        case 'atime':
            return fileatime($file);
            break;
        case 'suffix':
            if (is_file($file))
                return substr($file, strrpos($file, '.') + 1);
            return '-';
            break;
        default:
            return false;
            break;
    }
}
 
/**
 * 整理json格式字符串数据
 * @param string $json json格式字符串数据
 * @param bool|false $assoc
 * @param int $depth
 * @param int $options
 * @return mixed
 */
public function json_clean_decode($json, $assoc = false, $depth = 512, $options = 0)
{
    $json = str_replace(array("\n", "\r"), "", $json);
    $json = preg_replace("#(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|([\s\t](//).*)#", '', $json);
    $json = preg_replace('/([{,]+)(\s*)([^"]+?)\s*:/', '$1"$3":', $json);
    $json = preg_replace('/(,)\s*}$/', '}', $json);
    if (version_compare(phpversion(), '5.4.0', '>=')) {
        $json = json_decode($json, $assoc, $depth, $options);
    } elseif (version_compare(phpversion(), '5.3.0', '>=')) {
        $json = json_decode($json, $assoc, $depth);
    } else {
        $json = json_decode($json, $assoc);
    }
    return $json;
}
 

 
/**
 * 判断$strJson是否是一个有效的json格式字符串
 * @param $strJson
 * @return bool
 */
public function isValidJson($strJson)
{
    json_decode($strJson);
    return (json_last_error() === JSON_ERROR_NONE);
}
 

 
/**
 * 去掉字符串中的斜线(单斜线和双斜线)
 * @param string $string
 * @return string
 */
public static function removeslashes($string = '')
{
    $string = implode("", explode("\\", $string));
    return stripslashes(trim($string));
}

//去除数组中的单斜线
function stripslashes_deep($value)
{
    $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
    return $value;
}

//入库添加斜线 防sql注入
function add_slashes_recursive( $variable )
{
    if ( is_string( $variable ) )
        return addslashes( $variable ) ;

elseif ( is_array( $variable ) )
        foreach( $variable as $i => $value )
            $variable[ $i ] = add_slashes_recursive( $value ) ;

return $variable ;
}

 
//页面显示时去掉数据库中数据的斜线
function strip_slashes_recursive( $variable )
{
    if ( is_string( $variable ) )
        return stripslashes( $variable ) ;
    if ( is_array( $variable ) )
        foreach( $variable as $i => $value )
            $variable[ $i ] = strip_slashes_recursive( $value ) ;
    
    return $variable ; 
}

数据库操作
/**

* 连接MYSQL函数,需要在连接的时候传递一个数组
 * @param array $config
 * @return resource

 */
function connect1 ($config){

//连接mysql
    $link=@mysql_connect($config['host'],$config['username'],$config['password']) or die ('数据库连接失败<br/>ERROR '.mysql_errno().':'.mysql_error());
    //设置字符集
    mysql_set_charset($config['charset']);
    //打开指定的数据库
    mysql_select_db($config['dbName']) or die('指定的数据库打开失败');   
    return $link;
}

/**建议使用该函数
 * 连接MYSQL函数,通过常量的形式来连接数据库
 * 自定义配置文件,配置文件中自定义常量,包含需要使用的信息
 * @return resource

 */
function connect2 (){ 

//连接mysql
    $link=@mysql_connect(DB_HOST,DB_USER,DB_PWD) or die ('数据库连接失败<br/>ERROR '.mysql_errno().':'.mysql_error());

    //设置字符集   
    mysql_set_charset(DB_CHARSET);

//打开指定的数据库
    mysql_select_db(DB_DBNAME) or die('指定的数据库打开失败');
    return $link;
}

/* array(
'username'=>'king',
'password'=>'123123',
'email'=>'dh@qq.com'
) */

/**
 * 插入记录的操作
 * @param array $array
 * @param string $table
 * @return boolean

 */
function insert($array,$table){

$keys=join(',',array_keys($array));
    $values="'".join("','", array_values($array))."'";
    $sql="insert {$table}({$keys}) VALUES ({$values})";
    $res=mysql_query($sql);
    if($res){
        return mysql_insert_id();
    }else{
        return false;
    }
}

/**
 * MYSQL更新操作
 * @param array $array
 * @param string $table
 * @param string $where
 * @return number|boolean

 */
function update($array,$table,$where=null){

foreach ($array as $key=>$val){
        $sets.=$key."='".$val."',";
    }
    $sets=rtrim($sets,','); //去掉SQL里的最后一个逗号
    $where=$where==null?'':' WHERE '.$where;
    $sql="UPDATE {$table} SET {$sets} {$where}";
    $res=mysql_query($sql);
    if ($res){
        return mysql_affected_rows();
    }else {
        return false;
    }
}

/**
 * 删除记录的操作
 * @param string $table
 * @param string $where
 * @return number|boolean

 */
function delete($table,$where=null){

$where=$where==null?'':' WHERE '.$where;
    $sql="DELETE FROM {$table}{$where}";
    $res=mysql_query($sql);
    if ($res){
        return mysql_affected_rows();
    }else {
        return false;
    }
}

/**
 * 查询一条记录
 * @param string $sql
 * @param string $result_type
 * @return boolean

 */
function fetchOne($sql,$result_type=MYSQL_ASSOC){

$result=mysql_query($sql);
    if ($result && mysql_num_rows($result)>0){
        return mysql_fetch_array($result,$result_type);
    }else {
        return false;
    }

}

/**
 * 得到表中的所有记录
 * @param string $sql
 * @param string $result_type
 * @return boolean

 */
function fetchAll($sql,$result_type=MYSQL_ASSOC){

$result=mysql_query($sql);
    if ($result && mysql_num_rows($result)>0){
        while ($row=mysql_fetch_array($result,$result_type)){
            $rows[]=$row;
        }
        return $rows;
    }else {
        return false;
    }
}

/**取得结果集中的记录的条数
 * @param string $sql
 * @return number|boolean

 */
function getTotalRows($sql){

$result=mysql_query($sql);
    if($result){
        return mysql_num_rows($result);
    }else {
        return false;
    }
   
}

/**释放结果集
 * @param resource $result
 * @return boolean

 */
function  freeResult($result){

return  mysql_free_result($result);
}

/**断开MYSQL
 * @param resource $link
 * @return boolean
 */function close($link=null){
    return mysql_close($link);
}

/**得到客户端的信息
 * @return string

 */
function getClintInfo(){

return mysql_get_client_info();
}

/**得到MYSQL服务器端的信息
 * @return string

 */
function getServerInfo($link=null){

return mysql_get_server_info($link);
}

/**得到主机的信息
 * @return string

 */
function getHostInfo($link=null){

return mysql_get_host_info($link);
}

/**得到协议信息
 * @return string

*/
function getProtoInfo($link=null){

return mysql_get_proto_info($link);

}

/**
 * 根据数据中的某一字段排序
 * @param array $array 原始数组
 * @param $field 数组字段
 * @param bool|false $desc
 */
public function sortArrByField(&$array, $field, $desc = true)
{
    $fieldArr = array();
    foreach ($array as $k => $v) {
        $fieldArr[$k] = $v[$field];
    }
    $sort = $desc  ? SORT_DESC : SORT_ASC ;
    array_multisort($fieldArr, $sort, $array);
}

//获得数组中重复的数据
function fetchRepeatMemberInArray($array)
{
    // 获取去掉重复数据的数组
    $unique_arr = array_unique($array);
    // 获取重复数据的数组
    $repeat_arr = array_diff_assoc($array, $unique_arr);
    return $repeat_arr;
}

//PHP实现双端队列
class Deque
{
    public $queue = array();

/**(尾部)入队  **/
    public function addLast($value)
    {
        return array_push($this->queue,$value);
    }
    /**(尾部)出队**/
    public function removeLast()
    {
        return array_pop($this->queue);
    }
    /**(头部)入队**/
    public function addFirst($value)
    {
        return array_unshift($this->queue,$value);
    }
    /**(头部)出队**/
    public function removeFirst()
    {
        return array_shift($this->queue);
    }
    /**清空队列**/
    public function makeEmpty()
    {
        unset($this->queue);
    }

/**获取列头**/
    public function getFirst()
    {
        return reset($this->queue);
    }

/** 获取列尾 **/
    public function getLast()
    {
        return end($this->queue);
    }

/** 获取长度 **/
    public function getLength()
    {
        return count($this->queue);
    }

}

PHP常用函数封装的更多相关文章

  1. php文件操作(最后进行文件常用函数封装)

    文件信息相关API $filename="./1-file.php"; //filetype($filename):获取文件的类型,返回的是文件的类型 echo '文件类型为:', ...

  2. Javascript:常用函数封装

    //cookie function setCookie(name, value, iDay) { if(iDay!==false) { var oDate=new Date(); oDate.setD ...

  3. javascript常用函数封装——运动、cookie、ajax、获取行内样式兼容写法、拖拽

    运动.cookie.ajax.获取行内样式兼容写法.拖拽封装大合集. //url,data,type,timeout,success,error function ajax(options){ //- ...

  4. Python:常用函数封装

    def is_chinese(uchar): """判断一个unicode是否是汉字""" if uchar >= u'\u4e00' ...

  5. PHP个人常用函数封装

    function GetIP(){ if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $cip = $_SERVER["HTTP_CLIEN ...

  6. shell常用函数封装-main.sh

    #!/bin/bash #sunlight sp monitor system #created on 2018/01/07#by chao.dong#used by sp servers consi ...

  7. C#验证邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP类等常用函数封装

    #region 验证邮箱验证邮箱 /**//// <summary> /// 验证邮箱 /// </summary> /// <param name="sour ...

  8. 我自己的Javascript 库,封装了一些常用函数 Kingwell.js

    我自己的Javascript 库,封装了一些常用函数 Kingwell.js 博客分类: Javascript javascript 库javascript库  现在Javascript库海量,流行的 ...

  9. PHP其它常用函数;<<<面向对象(OPP)的三大特性:封装、继承、加态:>>> <----面试题 ;构造方法、析构方法,魔术方法、set、get方法;静态;抽象类;接口

    PHP其它常用函数:     赋值:$r->name = "元素";      取值: echo $r->name;  count()   计算数组中的元素数目或对象中 ...

随机推荐

  1. fragment 碎片整理

    activity_m1.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm ...

  2. go 的 time ticker 设置定时器

    上示例 package main import ( // "bytes" // "encoding/json" "fmt" // " ...

  3. hdu 5791 (DP) Two

    hdu 5791 Two Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  4. 第二章 第二个spring-boot程序(转载)

    本编博客转发自:http://www.cnblogs.com/java-zhao/p/5336369.html 上一节的代码是spring-boot的入门程序,也是官方文档上的一个程序.这一节会引入s ...

  5. VS2013使用rtklib中需要注意的一些问题(编译)

    最近因为项目需要需要对rtcm数据进行解码,rtklib提供了很多底层的函数,准备直接输出标准DLL的方式供C#调用.下面把项目中引用rtklib源码需要注意的地方记录下. 1. 首先在vs2013中 ...

  6. Oracle 的基本使用--基本命令<一>

    sql*plus 的常用命令 连接命令 1.conn[ect] 用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上 as sysdba 或是 ...

  7. u-boot 编译时间

    给定的格式FORMAT 控制着输出,解释序列如下: %%    一个文字的 %  %a    当前locale 的星期名缩写(例如: 日,代表星期日)  %A    当前locale 的星期名全称 ( ...

  8. android stuido build 慢的解决办法

    Enable Offline Work: Click File -> Settings. Search for "gradle" and click in Offline w ...

  9. sql2008日志文件截断

    日志文件比较大时,使用语句减少大小. USE DATABASENAME;GO-- Truncate the log by changing the database recovery model to ...

  10. Mysql --分区表(2)

    分区类型 RANGE分区 range分区的表是利用取值范围将数据分成分区,区间要连续并且不能互相重叠,使用values less than操作符进行分区定义 LIST分区 LIST分区是建立离散的值列 ...