php常用的函数

<?php

/**
 * Created by PhpStorm.
 * User: liufangting
 * Date: 2016/4/25
 * Time: 11:04
 */
class CommonHelp
{
    /**
     * [获取时间差]
     * @param $time
     * @return string
     */
    public static function transformTime($time)
    {
        $rtime = date("m-d H:i", $time);
        $rtime2 = date("Y-m-d H:i", $time);
        $htime = date("H:i", $time);
        $time = time() - $time;
        switch (true) {
            case $time < 60:
                $str = $time . '秒前';
                break;
            case $time < 60 * 60:
                $min = floor($time / 60);
                $str = $min . '分钟前';
                break;
            case $time < 60 * 60 * 24:
                $h = floor($time / (60 * 60));
                $fen = $time - $h * 3600;
                $fen = ($fen > 60) ? floor($fen / 60) . '分钟' : '';
                $str = $h . '小时' . $fen . '前';
                break;
//            case $time < 60 * 60 * 24 * 3:
//                $d = floor($time / (60 * 60 * 24));
//                $str = ($d == 1) ? '昨天' : '前天';
//                break;
            case $time < 60 * 60 * 24 * 7:
                $d = floor($time / (60 * 60 * 24));
                $str = $d . '天前';
                break;
            case $time < 60 * 60 * 24 * 30:
                $str = $rtime;
                break;
            default:
                $str = $rtime2;
        }
        return $str;
    }

 

    /**获取某段时间的范围
     * @param $start_date
     * @param $end_date
     * @return array
     */
    public static function getDateRange($start_date, $end_date)
    {
        $date_array = array();
        for ($i = 0; ; $i++) {
            $date_array[$i] = date('Y-m-d', strtotime($start_date) + $i * 24 * 60 * 60);
            if (strtotime($date_array[$i]) >= strtotime($end_date)) break;
        }

        return $date_array;
    }

    /**
     * 返回输入数组中某个单一列的值
     * @param $searchArr [必须! 规定要使用的多维数组]
     * @param string $searchField [必须! 需要返回值的列]
     * @param string $indexKey [可选 用作返回数组的索引/键的列]
     * @param array $result [不需要!存储返回值的列] 注意:不必给参数
     * @param array $result2 [不需要!存储返回数组的索引] 注意:不必给参数
     * @return array [返回键值对结果]
     */
    public static function arrColumn($searchArr, $searchField = '', $indexKey = '', & $result = [], & $result2 = [])
    {

        if (empty($searchArr) || empty($searchField)) {
            return $result;
        }

        foreach ($searchArr as $key => $val) {
            if (is_array($val)) {
                self::arrColumn($val, $searchField, $indexKey, $result, $result2);
            } else {
                if ($key == $searchField) {
                    $result[] = $val;
                }
                if ($key == $indexKey) {
                    $result2[] = $val;
                }
            }
        }
        return empty($indexKey) ? $result : array_combine($result2, $result);//用一个数组的值作为其键名,另一个数组的值作为其值

    }

    /**
     * 数组筛选
     * @param array $haystack = [] 需筛选的数组
     * @param array $retain = [] 需保留的字段
     * @return array
     * @author LianDa
     * @remark 从数组中筛选出需要保留的字段并组成新的数组返回
     */
    public static function filterArr($haystack = [], $retain = [])
    {
        // 验证参数
        if (empty($haystack) || empty($retain)) {
            return $haystack;
        }

        // 开始筛选
        $result = [];
        foreach ($haystack as $key => $val) {
            // 如键是数组,则递归
            if (is_array($val)) {
                $result[$key] = self::filterArr($val, $retain);
            } else {
                // 是否在需保留的字段中
                if (in_array($key, $retain) || is_numeric($key)) {
                    $result[$key] = $val;
                }
            }
        }

        // 释放并返回
        unset($haystack);
        return $result;
    }

    /**
     * 把预定义的字符批量转化为HTML实体,支持多维数组
     * @param $param [要转义的参数]
     * @return array [返回转义后的数组]
     */
    public static function deepHtmlSpecilChars($param)
    {
        if (empty($param)) {
            return array();
        }
        return is_array($param) ? array_map([__CLASS__, 'deepHtmlSpecilChars'], $param) : htmlspecialchars($param);
    }

    /**
     * 过滤参数防XSS跨站脚本攻击和sql注入,支持多维数组
     * @param string $param [要过滤的参数]
     * @return array [返回过滤后的参数]
     */
    public static function deepFilter($param = '')
    {
        if (empty($param)) {
            return $param;
        }
        return is_array($param) ? array_map([__CLASS__, 'deepFilter'], $param) : strip_tags(addslashes($param));
    }

    /*
     *唯一单号生产 总过22位
     * ***/
    public static function onlyNo()
    {
        $dateStr = date("YmdHis");  //20160710125226  14 位
        list($tmp1, $tmp2) = explode(' ', microtime());
        $microsecond = mb_substr($tmp1, 2, 3, "utf8");  //3位
        $rand = random_int(10000, 99999);//5
        $onlyNo = $dateStr . $microsecond . $rand;
        return $onlyNo;
    }


}

转载于:https://my.oschina.net/u/1392428/blog/760643

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值