返回:一個$arr1的副本,後續的數組中出現一個鍵值相同的元素,就在副本中刪掉這個元素,最後返回這個副本。
如:$arr1中有元素 ['k1' => 'v1'],$arr2~n中出現了同樣的同鍵名同鍵值的 'k1'=>'v1'就不返回這個元素了。
返回:一個$arr1的副本,後續的數組中出現一個值相同的元素,就在副本中刪掉這個元素,最後返回這個副本。
返回:一個$arr1的副本,後續的數組中出現一個鍵相同的元素,就在副本中刪掉這個元素,最後返回這個副本。
和array_diff_key()用法差不多,只是比較的規則可以自己設置,下面有示例代碼,可以加一些復雜的。比如是學生數據的數組,判斷名字重復然後分數大於60.自定義函數的倆參數是key
和上一個差不多,除了倆參數是元素(即'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; }