• php中的常用数组函数(一)(比较多个数组的差集的函数们 array_diff_assoc() array_diff() array_diff_key() array_diff_ukey() array_diff_uassoc())


    array_diff_assoc($arr1, $arr2, $arr3,... n);

    返回:一个$arr1的副本,后续的数组中出现一个键值相同的元素,就在副本中删掉这个元素,最后返回这个副本。

    如:$arr1中有元素 ['k1' => 'v1'],$arr2~n中出现了同样的同键名同键值的 'k1'=>'v1'就不返回这个元素了。


    array_diff(同上)

    返回:一个$arr1的副本,后续的数组中出现一个值相同的元素,就在副本中删掉这个元素,最后返回这个副本。


    array_diff_key(同上)

     返回:一个$arr1的副本,后续的数组中出现一个键相同的元素,就在副本中删掉这个元素,最后返回这个副本。


    array_diff_ukey(同上,'自定义比较函数')

    和array_diff_key()用法差不多,只是比较的规则可以自己设置,下面有示例代码,可以加一些复杂的。比如是学生数据的数组,判断名字重复然后分数大于60.自定义函数的俩参数是key


    array_diff_uassoc(同上,'自定义比较函数')

    和上一个差不多,除了俩参数是元素(即'key'=>'value')


    以下是。这5个函数的演示。 

    /***********array_diff_assoc(统计与多个数组的键值差集) ——————返回$arr1中 后续数组没有的键值集合(数组2~数组n中出现了一样的键值 就不包含这对键值)*****************/
    $arr1 = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
    $arr2 = array('s1' => 'v1', 's2' => 'v2', 'k3' => 'v3');//有和$arr1中一样的'k3' => 'v3',函数的返回值中就不包含'k3' => 'v3'了
    $arr3 = array('k1' => 'v1', 's2' => 'v2');//有一样的'k1' => 'v1',返回就不包含'k1' => 'v1'了
    $arrDiffAssoc = array_diff_assoc($arr1, $arr2, $arr3);
    var_dump($arrDiffAssoc);
    
    /***********array_diff(统计与多个数组的值差集) *****************/
    $arr1 = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
    $arr2 = array('a1' => 'v1', 'k2' => 'a2');
    $arr3 = array('a2' => 'v2');
    $arrDiff = array_diff($arr1, $arr2, $arr3);
    var_dump($arrDiff);
    
    /***********array_diff_key(统计与多个数组的键差集) *****************/
    $arr1 = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
    $arr2 = array('k1' => 'apple', 'k2' => 'banana');//只对比键名,同键名的键值对在函数返回值中扣掉
    $arr3 = array('a1' => 'v1');
    $arrDiffKey = array_diff_key($arr1, $arr2, $arr3);
    var_dump($arrDiffKey);
    
    /***********array_diff_ukey(用自定义回调函数,统计与多个数组的键差集) *****************/
    $arr1 = array( 'blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4 );
    $arr2 = array( 'green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
    $arrDiffUkey = array_diff_ukey($arr1, $arr2, 'arr_key_compare_func');
    var_dump($arrDiffUkey);
    
    function arr_key_compare_func ($k1, $k2) {
        if($k1 == $k2)
            return 0;
        else if ($k1 > $k2)
            return -1;
        else
            return 1;
    }
    
    /***********array_diff_uassoc(用自定义回调函数,统计与多个数组的键值差集) *****************/
    $arr1 = array('blue' => 1, 'red' => 2, 'green' =>3 , 'purple' => 4);
    $arr2 = array('green' => 5, 'blue' => 1, 'yellow' => 7, 'cyan' => 8);
    $arrDiffUassoc = array_diff_uassoc($arr1, $arr2, 'arr_assoc_compare_func');
    var_dump($arrDiffUassoc);
    function arr_assoc_compare_func($a, $b) {
        if ($a === $b)
            return 0;
        return ($a > $b) ? 1 : -1;
    }
  • 相关阅读:
    Python作业本——第4章 列表
    Python作业本——第3章 函数
    Python作业本——前言
    Yandex企业邮箱申请教程
    如何看待HTTP/3
    图床合集
    Windows File Recovery
    在线检测你的密码是否被泄露
    mybatis的mapper文件内容回顾
    java中系统中的常量
  • 原文地址:https://www.cnblogs.com/sweetXiaoma/p/6003039.html
Copyright © 2020-2023  润新知