zoukankan      html  css  js  c++  java
  • PHP常用函数封装


    PHP常用函数封装

    
    //二分查找
    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("
    ", "
    "), "", $json);
        $json = preg_replace("#(/*([^*]|[
    ]|(*+([^*/]|[
    ])))**+/)|([s	](//).*)#", '', $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);
        }
    
    }
    
    
  • 相关阅读:
    “XXXXX” is damaged and can’t be opened. You should move it to the Trash 解决方案
    深入浅出 eBPF 安全项目 Tracee
    Unity3d开发的知名大型游戏案例
    Unity 3D 拥有强大的编辑界面
    Unity 3D物理引擎详解
    Unity 3D图形用户界面及常用控件
    Unity 3D的视图与相应的基础操作方法
    Unity Technologies 公司开发的三维游戏制作引擎——Unity 3D
    重学计算机
    windows cmd用户操作,添加,设备管理员组,允许修改密码
  • 原文地址:https://www.cnblogs.com/qixidi/p/10199667.html
Copyright © 2011-2022 走看看