array_diff_uassoc

(PHP 5, PHP 7, PHP 8)

array_diff_uassoc用用戶提供的回調(diào)函數(shù)做索引檢查來計(jì)算數(shù)組的差集

說明

array_diff_uassoc(array $array, array ...$arrays, callable $key_compare_func): array

比較了 arrayarrays 并返回不同之處。 注意和 array_diff() 不同的是鍵名也用于比較。

array_diff_assoc() 不同的是使用了用戶自定義的回調(diào)函數(shù),而不是內(nèi)置的函數(shù)。

參數(shù)

array

待比較的數(shù)組

arrays

要比較的數(shù)組

key_compare_func

在第一個(gè)參數(shù)小于,等于或大于第二個(gè)參數(shù)時(shí),該比較函數(shù)必須相應(yīng)地返回一個(gè)小于,等于或大于 0 的整數(shù)。

callback(mixed $a, mixed $b): int

返回值

返回一個(gè) array,該數(shù)組包括了所有在 array 中但是不在任何其它參數(shù)數(shù)組中的值。

范例

示例 #1 array_diff_uassoc() 例子

上面的例子中 "a" => "green" 出現(xiàn)在兩個(gè)數(shù)組中因此不在函數(shù)的輸出中。但是 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;
}

$array1 = array("a" => "green""b" => "brown""c" => "blue""red");
$array2 = array("a" => "green""yellow""red");
$result array_diff_uassoc($array1$array2"key_compare_func");
print_r($result);
?>

以上例程會(huì)輸出:

Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

通過用戶提供的回調(diào)函數(shù)檢查兩個(gè)數(shù)組的索引是否相等。

注釋

注意:

注意本函數(shù)只檢查了多維數(shù)組中的一維。當(dāng)然可以用 array_diff_uassoc($array1[0], $array2[0], "key_compare_func"); 檢查更深的維度。

參見

  • array_diff() - 計(jì)算數(shù)組的差集
  • array_diff_assoc() - 帶索引檢查計(jì)算數(shù)組的差集
  • array_udiff() - 用回調(diào)函數(shù)比較數(shù)據(jù)來計(jì)算數(shù)組的差集
  • array_udiff_assoc() - 帶索引檢查計(jì)算數(shù)組的差集,用回調(diào)函數(shù)比較數(shù)據(jù)
  • array_udiff_uassoc() - 帶索引檢查計(jì)算數(shù)組的差集,用回調(diào)函數(shù)比較數(shù)據(jù)和索引
  • array_intersect() - 計(jì)算數(shù)組的交集
  • array_intersect_assoc() - 帶索引檢查計(jì)算數(shù)組的交集
  • array_uintersect() - 計(jì)算數(shù)組的交集,用回調(diào)函數(shù)比較數(shù)據(jù)
  • array_uintersect_assoc() - 帶索引檢查計(jì)算數(shù)組的交集,用回調(diào)函數(shù)比較數(shù)據(jù)
  • array_uintersect_uassoc() - 帶索引檢查計(jì)算數(shù)組的交集,用單獨(dú)的回調(diào)函數(shù)比較數(shù)據(jù)和索引