美文网首页
php functions

php functions

作者: JUN888 | 来源:发表于2019-08-13 17:55 被阅读0次
    
    <?php
    
    /**
     * 微擎密码生成
     *
     */
    
    function we7password($passwordinput, $salt, $authkey)
    {
        $passwordinput = "{$passwordinput}-{$salt}-{$authkey}";
        return sha1($passwordinput);
    }
    
    /*****************************************时间相关函数*********************************************** */
    
    /**
     * @title  计算时间差
     * @author lyj [author] [2018-06-07]
     * @param  [type] $datetimeStr1 [日期时间字符串1]
     * @param  [type] $datetimeStr2 [日期时间字符串2]
     * @return [type]               [返回秒数]
     */
    function getDateTimeDifference($datetimeStr1, $datetimeStr2)
    {
        return strtotime($datetimeStr1) - strtotime($datetimeStr2);
    }
    
    /**
     * @title  时间戳 转 日期时间字符串
     * @author lyj [author] [2018-06-07]
     * @param  [type] $timeStamp [时间戳 数字]
     * @param  string $pattern   [日期时间格式 Y-m-d H:i:s]
     * @return [type]            [返回 日期时间字符串]
     */
    function getDateTimeStr($timeStamp = null, $pattern = 'Y-m-d H:i:s')
    {
        if ($timeStamp == null || !is_int($timeStamp)) {
            return date($pattern);
        } else {
            return date($pattern, $timeStamp);
        }
    }
    
    /**
     * @title  根据需要返回对应时间戳
     * @author lyj [author] [2018-06-04]
     * @param  string $config [description]
     * @return [type]         [description]
     */
    function getTimestamp($config = '')
    {
        switch ($config) {
            case '1':
                // 返回 明天 的Unix时间戳
                return strtotime("+1 day");
                break;
            case '2':
                // 返回 昨天 的Unix时间戳
                return strtotime("-1 day");
                break;
            case '3':
                // 返回 下月 的Unix时间戳
                return strtotime("+1 month");
                break;
            case '4':
                // 返回 上月 的Unix时间戳
                return strtotime("-1 month");
                break;
            case '5':
                // 返回 明年 的Unix时间戳
                return strtotime("+1 year");
                break;
            case '6':
                // 返回 上年 的Unix时间戳
                return strtotime("-1 year");
                break;
            case '7':
                // 返回 下星期 的Unix时间戳
                return strtotime("+1 week");
                break;
            case '8':
                // 返回 上星期 的Unix时间戳
                return strtotime("-1 week");
                break;
            case '9':
                // 返回 本月第一天 的Unix时间戳
                return strtotime(date("Y-m-01 H:i:s"));
                break;
            case '10':
                // 返回 本月最后一天 的Unix时间戳
                return strtotime(date("Y-m-t H:i:s"));
                break;
            case '11':
                // 返回 本周第一天 的Unix时间戳
                return strtotime("this week");
                break;
            case '12':
                // 返回 本周最后一天 的Unix时间戳
                return strtotime("last day this week");
                break;
    
            case '13':
                // 返回 今年开始 的Unix时间戳
                return strtotime(date("Y-m-d"));
                break;
            default:
                // 返回 当前 的Unix时间戳
                return time();
                break;
        }
    }
    
    /*****************************************时间相关函数*********************************************** */
    
    /*****************************************工具类函数*********************************************** */
    
    /**
     * 获取二维数组中某列 $colstr 的最大最小值
     */
    function getMaxAndMinInArr($arr, $colstr = 0)
    {
        //求colstr这一列的最大值
        $max = 0;
        foreach ($arr as $key => $val) {
            $max = max($max, $val[$colstr]);
        }
    
        //求colstr这一列的最小值
        $min = $max;
        foreach ($arr as $key => $val) {
            $min = min($min, $val[$colstr]);
        }
    
        return array('max' => $max, 'min' => $min);
    }
    
    /**
     * @param int $n  参数。188752
     * @param int $length  要保存的小数位
     * @param bool $status 当为true时四舍五入保存
     * @return double   返回数据
     */
    function decimals($n = 0, $length = 2, $status = false)
    {
        if ($status === true) {
            $num = round($n, $length);
            return $num;
        }
        $n = (string) $n;
        $n = explode('.', $n);
        $n[0] .= '.';
        for ($i = 0; $i < $length; $i++) {
            $n[0] .= !isset($n[1][$i]) ? '0' : $n[1][$i];
        }
        return $n[0];
    }
    
    /**
     * 获取唯一码
     * @param int $len
     * @return string
     */
    function get_uni_code($len = 8)
    {
        $code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $rand = $code[rand(0, 25)]
        . strtoupper(dechex(date('m')))
        . date('d') . substr(time(), -5)
        . substr(microtime(), 2, 5)
        . sprintf('%02d', rand(0, 99));
        for (
            $a = md5($rand),
            $s = '0123456789ABCDEFGHIJKLMNOPQRSTUV',
            $d = '',
            $f = 0;
            $f < $len;
            $g = ord($a[$f]),
            $d .= $s[($g ^ ord($a[$f])) - $g & 0x1F],
            $f++
        );
    
        return $d;
    }
    
    /**
     * 根据两点经纬度计算距离
     * @param $lat1 点1纬度
     * @param $lng1 点1经度
     * @param $lat2 点2纬度
     * @param $lng2 点2经度
     * @return float 距离单位:千米
     */
    function get_distance($lat1, $lng1, $lat2, $lng2)
    {
        $earthRadius = 6371.004;
        $lat1 = ($lat1 * pi()) / 180;
        $lng1 = ($lng1 * pi()) / 180;
        $lat2 = ($lat2 * pi()) / 180;
        $lng2 = ($lng2 * pi()) / 180;
        $calcLongitude = $lng2 - $lng1;
        $calcLatitude = $lat2 - $lat1;
        $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
        $stepTwo = 2 * asin(min(1, sqrt($stepOne)));
        $calculatedDistance = $earthRadius * $stepTwo;
    
        return sprintf("%.2f", $calculatedDistance);
    }
    
    /**
     * @title  随机字符串
     * @author lyj [author] [2018-06-08]
     * @param  integer $length  [字符长度]
     * @param  string  $type    [类型 数字 大写字母 小写字母 全部]
     * @param  integer $convert [大小写 大于0 大写 小于0 小写]
     * @return [type]           [description]
     *
     * echo random(32,'all',-45646);
     */
    function random($length = 6, $type = 'all', $convert = 0)
    {
        $config = array(
            'number' => '1234567890',
            'capital_letter'=> 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
            'small_letter'=> 'abcdefghijklmnopqrstuvwxyz',         
            'all'    => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
        );
     
        if (!isset($config[$type])) {
            $type = 'string';
        }
        $string = $config[$type];
     
        $code = '';
        $strlen = strlen($string) - 1;
        for ($i = 0; $i < $length; $i++) {
            $code .= $string{mt_rand(0, $strlen)};
        }
        if ($convert != 0) {
            $code = ($convert > 0) ? strtoupper($code) : strtolower($code);
        }
        return $code;
    }
    
    
    /**
     * @title  去除代码中的空白和注释
     * @author lyj [author] [2018-06-08]
     * @param  [type] $content [php文件内容]
     * @return [type]          [清空空白和注释后的代码]
     *
     *
     *  使用说明
     *   $phpstr = file_get_contents("E:/www/test/functions.php");
     *   $phpstr_new = strip_whitespace($phpstr); 
     *   file_put_contents('E:/www/test/newphp.php', $phpstr_new);
     */
    function strip_whitespace($content) 
    {
        $stripStr   = '';
        //分析php源码
        $tokens     = token_get_all($content);
        $last_space = false;
        for ($i = 0, $j = count($tokens); $i < $j; $i++) {
            if (is_string($tokens[$i])) {
                $last_space = false;
                $stripStr  .= $tokens[$i];
            } else {
                switch ($tokens[$i][0]) {
                    //过滤各种PHP注释
                    case T_COMMENT:
                    case T_DOC_COMMENT:
                        break;
                    //过滤空格
                    case T_WHITESPACE:
                        if (!$last_space) {
                            $stripStr  .= ' ';
                            $last_space = true;
                        }
                        break;
                    case T_START_HEREDOC:
                        $stripStr .= "<<<THINK\n";
                        break;
                    case T_END_HEREDOC:
                        $stripStr .= "THINK;\n";
                        for($k = $i+1; $k < $j; $k++) {
                            if(is_string($tokens[$k]) && $tokens[$k] == ';') {
                                $i = $k;
                                break;
                            } else if($tokens[$k][0] == T_CLOSE_TAG) {
                                break;
                            }
                        }
                        break;
                    default:
                        $last_space = false;
                        $stripStr  .= $tokens[$i][1];
                }
            }
        }
        return $stripStr;
    }
    
    if (!function_exists('arr_multi_sort')) {
        
        /**
         * 根据二维数组某列 排序
         *
         * @param [type] $arr  数组
         * @param [type] $arg  列的键值
         * @param string $sort 排序类型 asc 升序 desc 降序 默认升序
         * @return void
         */
        function arr_multi_sort(&$arr,$arg,$sort = 'asc')
        {
            $sort = $sort=='asc'?SORT_ASC:SORT_DESC;
            $column_data = array_column($arr,$arg);
            array_multisort($column_data,$sort,$arr);
        }
    }
    
    if (!function_exists('log2txt')) {
        
        /**
         * 写入日志
         *
         * @param [type] $values
         * @param string $dir
         * @return void
         */
        function log2txt($values, $dir = 'lyj')
        {
            // 如果数据是数组则转换成字符
            if (is_array($values)) {
                $values = print_r($values, true);
            }
    
            // 日志内容
            $content = '[' . date('Y-m-d H:i:s') . ']' . PHP_EOL . $values . PHP_EOL . PHP_EOL;
            try {
                // 文件路径
                $filePath = $dir . '/logs/';
                // 路径不存在则创建
                !is_dir($filePath) && mkdir($filePath, 0755, true);
                // 写入文件
                return file_put_contents($filePath . date('Y-m-d') . '.log', $content . PHP_EOL . PHP_EOL, FILE_APPEND);
            } catch (\Exception $e) {
                return false;
            }
        }
    
    }
    
    
    
    
    
    
    /*****************************************工具类函数*********************************************** */
     
    
    $arr = [
        'a' => [
            'name' => '对的',
            'num' => 20,
        ],
        'b' => [
            'name' => 'as',
            'num' => 32,
        ],
        'c' => [
            'name' => '对方答复',
            'num' => 1,
        ],
    ]; 
    
    print_r($arr);
    
    arr_multi_sort($arr, 'num', desc);
    
    print_r($arr);
    
    
    
    

    相关文章

      网友评论

          本文标题:php functions

          本文链接:https://www.haomeiwen.com/subject/tqgbjctx.html