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;
}
原文地址:https://www.cnblogs.com/sweetXiaoma/p/6003039.html