zoukankan      html  css  js  c++  java
  • PHP收集一些常用函数与好用的自定义函数

    1.自定义打印函数P

    //自定义打印
    function pp($data,$exit=0){
    // 定义样式
    $str='<pre style="display: block;padding: 9.5px;margin: 44px 0 0 0;font-size: 13px;line-height: 1.42857;color: #333;word-break: break-all;word-wrap: break-word;background-color: #F5F5F5;border: 1px solid #CCC;border-radius: 4px;">';
    // 如果是boolean或者null直接显示文字;否则print
    if (is_bool($data)) {
    $show_data=$data ? 'true' : 'false';
    }elseif (is_null($data)) {
    $show_data='null';
    }else{
    $show_data=print_r($data,true);
    }
    $str.=$show_data;
    $str.='</pre>';
    echo $str;
    if($exit)
    exit;
    }

     效果:

     2.array_clomn()  和array_combine() 和array_values()

    说明

    array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) 

    array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。

     

    array_combine ( array $keys , array $values ):数组

    通过使用数组中的值keys作为键并使用 values数组中的值作为对应值来 创建数组

     

    array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。

    例:有这样一个数组 $arr:

     想取出id对应name的值 的数组

    $arr = array_column($goods,'name','id');

    输出为

    $arr = array_combine(array_column($arr,'id'),$arr);

    输出结果为

    清除掉键名 : $arr = array_values($arr)   应用场景举例(循环合并数组后清除掉前面的id键名)

    3.array_filter()

    array_filter ( $array , $callback )

    依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

     如果第二个值不填,则是过滤掉数组中的空值,第二个参数可以是自定义参数,挨个把数组的值丢进自定义函数,符合条件值的就返回

    例:想把数组$results中title数组为空的过滤掉

    Array
    (
        [0] => Array
            (
                [id] => 61
                [name] => 操作指南
                [category_id] => 64
                [displayorder] => 1
                [title] => Array
                    (
                        [0] => Array
                            (
                                [id] => 2
                                [name] => 采购操作指南
                                [category_id] => 61
                            )
    
                        [1] => Array
                            (
                                [id] => 3
                                [name] => 测试操作
                                [category_id] => 61
                            )
    
                    )
    
            )
    
        [1] => Array
            (
                [id] => 62
                [name] => 入驻协议
                [category_id] => 64
                [displayorder] => 0
                [title] => Array
                    (
                    )
    
            )
    
        [2] => Array
            (
                [id] => 64
                [name] => 提现帮助
                [category_id] => 64
                [displayorder] => 0
                [title] => Array
                    (
                        [0] => Array
                            (
                                [id] => 1
                                [name] => 提现帮助
                                [category_id] => 64
                            )
    
                    )
    
            )
    
    )

     实现代码:

    $results = array_filter($results,function ($val){return !empty($val['title']);});

    执行并打印后

     

     键为1的title数值为空,就被过滤掉了

    4.array_sum(array_column($array,$column));

    array_sum()是计算一维数组的值的和,array_column()是从二维数组$array中取出一列$column,

    下面演示计算二维数组$results的o_id这一列的和

    Array
    (
        [0] => Array
            (
                [code] => LS-20191018-3860224
                [sign_user] => 鏉庡皯椋�
                [o_id] => 151
            )
    
        [1] => Array
            (
                [code] => LS-20191019-8978560
                [sign_user] => 鏉庣粛椋�
                [o_id] => 171
            )
    
        [2] => Array
            (
                [code] => LS-20191022-7495040
                [sign_user] => 鏉庣粛椋�
                [o_id] => 187
            )
    
        [3] => Array
            (
                [code] => LS-20191022-1037312
                [sign_user] => 鏉庣粛椋�
                [o_id] => 187
            )
    
        [4] => Array
            (
                [code] => LS-20191022-2244480
                [sign_user] => 鏉庣粛椋�
                [o_id] => 187
            )
    
        [5] => Array
            (
                [code] => LS-20191023-5884288
                [sign_user] => 鏉庣粛椋�
                [o_id] => 192
            )
    
        [6] => Array
            (
                [code] => LS-20191023-1440512
                [sign_user] => 鏉庣粛椋�
                [o_id] => 190
            )
    
        [7] => Array
            (
                [code] => LS-20191023-5723264
                [sign_user] => 鏉庣粛椋�
                [o_id] => 200
            )
    
    )
    代码:
    $num = array_sum(array_column($results,'o_id'));
    结果:
    1465

    5.set_key_field()

    /**
    * 替换/增加 二位数组属性值 给二维数组中的每个一维数组增加若干列或者删除若干列
    *
    * @param array $data 需替换的二维数组
    * @param array $data $key[替换的健] => $val['替换的值'] (可多个健值)
    * @param array $data 需要删除的而为数组的健值 例:['id','key'...]
    */
    function set_key_field($results = [],$data = [],$del_key = [])
    {
    if(empty($results) || empty($data) || !is_array($results) || !is_array($data))
    return $results;

    foreach($results as &$val) {
    if(!is_array($val)) {
    continue;
    }

    if(!empty($del_key)) {
    foreach($del_key as $del) {
    if(!empty($val[$del]))
    unset($val[$del]);
    }
    }

    foreach($data as $data_key => $data_val) {
    $val[$data_key] = $data_val;
    }
    }

    return $results;
    }

     6.array_slice() 函数

    1.从数组中按条件取出值,我实际应用到的场景是从一个数组中取出最后两个元素的值

    例:

    <?php
    $a=array("red","green","blue","yellow","brown");
    print_r(array_slice($a,-2));
    ?>

    array_slice(array,start,length,preserve)
    第一个参数是要操作的数组,第二个参数是从第几个开始取,第三个可选参数是取多少个,默认取完,第四个可选参数true或false ,true保留键名,默认false重置键名

    7.strip_tags() 函数

    过滤掉字符串中的html标签,例如:echo strip_tags( ‘<p>222</p>’) ;输出222,把p标签过滤掉了

    8.similar_text(string,string)函数

    比较两个字符串的相似度,返回一个数字,例如70,说明两个字符串的相似度是70%

    9.中文地址转化为经纬度

    function address($address=null)
    {
    if(empty($address)) return false;

    $url = 'http://restapi.amap.com/v3/geocode/geo?address=' . $address . '&key=425ad4cb67dab10eba37566bf842dd13';
    if ($result = file_get_contents($url)) {
    $result = json_decode($result, true);
    //判断是否成功
    if (!empty($result['count'])) {
    return explode(',', $result['geocodes']['0']['location']);

    } else {
    return false;
    }
    }
    }

    10.根据两个地址的经纬度计算距离

    根据经纬度算距离,返回结果单位是公里,先纬度,后经度
    function getDistance($lat1, $lng1, $lat2, $lng2)
    {
    $EARTH_RADIUS = 6378.137;

    $radLat1 = rad($lat1);
    $radLat2 = rad($lat2);
    $a = $radLat1 - $radLat2;
    $b = rad($lng1) - rad($lng2);
    $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
    $s = $s * $EARTH_RADIUS;
    $s = round($s * 10000) / 10000;

    return $s;
    }
    function rad($d)
    {
    return $d * M_PI / 180.0;
    }
    
    
  • 相关阅读:
    Dark 运算符
    Dark 数据类型
    分支管理
    Git 远程仓库
    DELPHI实现百度开放平台
    win2008使用FireDac连接ORACLE数据库问题
    20160115学习日志
    20160113第一个ANDRIOD开发日志
    struts2漏洞与修复
    DELPHI XE5 与SQLITE
  • 原文地址:https://www.cnblogs.com/youantianqin/p/11886584.html
Copyright © 2011-2022 走看看