array_udiff()
是 PHP 中的一個函數,它用于比較兩個或多個數組,并返回一個包含第一個數組中不同于其他數組的元素的新數組。這個函數需要一個用戶自定義的回調函數來確定數組元素是否相等。
array_udiff()
函數的語法如下:
array_udiff(array $array1, array $array2, array $_ = null, callable $callback)
參數說明:
$array1
, $array2
, $_
:需要比較的數組。$callback
:用于比較數組元素的用戶自定義回調函數。應用場景:
array_udiff()
函數。例如,你可能需要比較對象的屬性而不是對象本身,或者需要根據某種特定邏輯比較字符串。示例:
class Person {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
}
$person1 = new Person("Alice", 30);
$person2 = new Person("Bob", 25);
$person3 = new Person("Charlie", 30);
$array1 = [$person1, $person2];
$array2 = [$person3];
function comparePersons($a, $b) {
return $a->age <=> $b->age;
}
$result = array_udiff($array1, $array2, "comparePersons");
print_r($result);
輸出結果:
Array
(
[0] => Person Object
(
[name] => Alice
[age] => 30
)
[1] => Person Object
(
[name] => Bob
[age] => 25
)
)
在這個示例中,我們創建了一個 Person
類,并使用 array_udiff()
函數比較了兩個包含 Person
對象的數組。我們使用自定義的 comparePersons()
函數作為回調函數,該函數根據 Person
對象的年齡進行比較。最后,$result
數組包含了 $array1
中與 $array2
不同的元素。