PHP Conference Japan 2024

array_uintersect_uassoc

(PHP 5, PHP 7, PHP 8)

array_uintersect_uassoc計算陣列的交集,額外檢查索引,使用個別的回呼函式比較資料和索引

說明

array_uintersect_uassoc(
    陣列 $array1,
    陣列 ...$arrays,
    可呼叫 $value_compare_func,
    可呼叫 $key_compare_func
): 陣列

計算陣列的交集,額外檢查索引,使用個別的回呼函式比較資料和索引。

參數

array1

第一個陣列。

arrays

其他陣列。

value_compare_func

比較函式必須回傳一個整數。若第一個參數小於、等於或大於第二個參數,則分別回傳小於零、等於零或大於零的整數。

callback(mixed $a, mixed $b): int
注意事項

如果比較函式回傳*非整數*值,例如 float,則會將回傳值內部轉換為 int。因此,像是 0.990.1 等值都會被轉換為整數 0,導致這些值被視為相等。

注意事項

排序回呼函式必須能夠處理來自任何陣列的任何值,且不論它們原本提供的順序為何。這是因為每個個別的陣列都會先自行排序,然後再與其他陣列進行比較。例如:

<?php
$arrayA
= ["string", 1];
$arrayB = [["value" => 1]];
// $item1 和 $item2 可以是 "string"、1 或 ["value" => 1] 中的任何一個
$compareFunc = static function ($item1, $item2) {
$value1 = is_string($item1) ? strlen($item1) : (is_array($item1) ? $item1["value"] : $item1);
$value2 = is_string($item2) ? strlen($item2) : (is_array($item2) ? $item2["value"] : $item2);
return
$value1 <=> $value2;
};
?>

key_compare_func

鍵值比較回呼函式。

回傳值

回傳一個陣列,其中包含所有在所有參數中都存在的 array1 的值。

範例

範例 #1 array_uintersect_uassoc() 範例

<?php
$array1
= array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");

print_r(array_uintersect_uassoc($array1, $array2, "strcasecmp", "strcasecmp"));
?>

上述範例將輸出:

Array
(
    [a] => green
    [b] => brown
)

參見:

新增筆記

使用者貢獻的筆記 1 則筆記

aidan at php dot net
20 年前
請注意,正確的函數概要是:

array array_uintersect_uassoc ( array array1, array array2 [, array ...], callback data_compare_func, callback key_compare_func)

您可以指定任意多個陣列,但最後兩個參數必須是有效的回呼函數。
To Top