array_diff_uassoc()函數(shù)比較兩個(gè)(或多個(gè))數(shù)組的鍵和值,并返回一個(gè)包含array1中的條目的數(shù)組,這些條目在任何其他具有相同值的數(shù)組中都不存在。
此函數(shù)不同于array_diff(),因?yàn)閍rray_diff()比較值,而此函數(shù)比較其他數(shù)組中的鍵及其值。
此函數(shù)與array_diff_assoc()不同,因?yàn)閍rray_diff_assoc()使用內(nèi)部算法比較鍵及其值,而此函數(shù)使用用戶定義的函數(shù)比較鍵及其值。
array_diff_uassoc ( $array1, $array2 [, $array3..., callback $key_compare_func] );
序號(hào) | 參數(shù)及說明 |
---|---|
1 | array1(必填) 要比較的數(shù)組 |
2 | array2(必填) 這是一個(gè)要與第一個(gè)數(shù)組進(jìn)行比較的數(shù)組 |
3 | array3(Optional) 與第一個(gè)數(shù)組進(jìn)行比較的數(shù)組 |
4 | key_compare_func(必填) 在第一個(gè)參數(shù)小于,等于或大于第二個(gè)參數(shù)時(shí),該比較函數(shù)必須相應(yīng)地返回一個(gè)小于,等于或大于 0 的整數(shù)。 |
此函數(shù)返回一個(gè)數(shù)組,其中包含array1中的所有條目,但其他任何數(shù)組中都不存在。
此函數(shù)最早是在PHP版本5.0.0中引入的。
試試下面的實(shí)例。在這里,如果 $input1鍵等于任何其他輸入數(shù)組,則鍵比較函數(shù)返回0; 如果大,則返回1; 如果小,則返回 -1。
使用定義的函數(shù)比較鍵時(shí),兩個(gè)數(shù)組中確實(shí)都有鍵“ a”,因此它不會(huì)出現(xiàn)在輸出中。 下一個(gè)鍵“ b”和“ c”不在第二個(gè)數(shù)組中,因此它將進(jìn)入輸出。 另外的對(duì)0 =>“ red”在輸出中,因?yàn)樵诘诙€(gè)參數(shù)“ red”中的鍵為1:
<?php function key_compare_func($a, $b) { if ($a === $b) { return 0; } return ($a > $b)? 1: -1; } $input1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $input2 = array("a" => "green", "yellow", "red"); $result = array_diff_uassoc($input1, $input2, "key_compare_func"); print_r($result); ?>測(cè)試看看?/?
輸出結(jié)果:
Array ( [b] => brown [c] => blue [0] => red )
試試下面的實(shí)例。這次“red”將不在輸出中,因?yàn)楝F(xiàn)在兩個(gè)鍵都等于0。
<?php function key_compare_func($a, $b) { if ($a === $b) { return 0; } return ($a > $b)? 1: -1; } $input1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $input2 = array("a" => "green", "c" => "yellow", "red"); $result = array_diff_uassoc($input1, $input2, "key_compare_func"); print_r($result); ?>測(cè)試看看?/?
輸出結(jié)果:
Array ( [b] => brown [c] => blue )