• 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);
        }
    
    }
    
    
  • 相关阅读:
    uniapp项目笔记
    JS的基本数据类型symbol
    javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
    const, let, var的区别
    vue中的computed属性
    微星主板多个硬盘启动顺序
    vue中子父组件传值问题
    Vue 中 ref 的使用
    码云ssh免密码登录
    当在iOS下获取scrollTop时可以获取到,在Android下获取scrollTop一直为0的问题
  • 原文地址:https://www.cnblogs.com/qixidi/p/10199667.html
Copyright © 2020-2023  润新知