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; }