array_udiff()是PHP中的一個數組函數,用于比較兩個或多個數組元素,返回第一個數組中只存在于它自己的元素。array_udiff()通過回調函數來比較數組元素,通過自定義回調函數返回一個整數值來比較數組元素的不同之處。下面我們就來詳細了解一下array_udiff()函數。
舉個例子,我們來比較兩個數組:
$array1 = array('a' =>'apple', 'b' =>'banana', 'c' =>'pear');
$array2 = array('d' =>'apple', 'e' =>'banana', 'f' =>'orange');
function compare($a, $b)
{
if ($a === $b) {
return 0;
}
return ($a >$b) ? 1 : -1;
}
$result = array_udiff($array1, $array2, 'compare');
print_r($result);
這里我們定義了兩個數組$array1和$array2,然后定義了一個名為compare的回調函數,用于比較兩個數組元素。接下來我們調用array_udiff()函數,傳入兩個數組和回調函數名稱,調用后會返回一個新的數組,包含在$array1中存在,但在$array2中不存在的元素。最后我們通過print_r()函數輸出結果。
輸出結果為:
Array
(
[c] =>pear
)
我們可以看到,最終結果只有一個數組元素'pear'。
如果沒有回調函數,array_udiff()會默認使用“===”來比較數組元素中絕對相等的關系。通常情況下,對于復雜類型的數組,我們需要自定義回調函數來比較數組元素。下面我們再來看一個例子。
$array1 = array(
array('name' =>'John', 'age' =>20),
array('name' =>'Mike', 'age' =>30),
array('name' =>'Peter', 'age' =>40)
);
$array2 = array(
array('name' =>'John', 'age' =>20),
array('name' =>'Mike', 'age' =>35),
array('name' =>'Mary', 'age' =>45)
);
function compare($a, $b)
{
if ($a['name'] === $b['name']) {
if ($a['age'] === $b['age']) {
return 0;
}
return ($a['age'] >$b['age']) ? 1 : -1;
}
return ($a['name'] >$b['name']) ? 1 : -1;
}
$result = array_udiff($array1, $array2, 'compare');
print_r($result);
這里我們定義了兩個二維數組$array1和$array2,每個數組都包含若干個關聯數組,每個關聯數組中包含'name'和'age'兩個元素。接著我們定義了一個名為compare的回調函數,它的作用是比較兩個關聯數組中'name'和'age'兩個元素。然后我們調用array_udiff()函數,將兩個數組和回調函數名稱作為參數傳入,調用后會返回一個新的數組,包含在$array1中存在,但在$array2中不存在的元素。最后我們通過print_r()函數輸出結果。
輸出結果為:
Array
(
[1] =>Array
(
[name] =>Mike
[age] =>30
)
[2] =>Array
(
[name] =>Peter
[age] =>40
)
)
我們可以看到,最終結果包含了在$array1中存在但在$array2中不存在的兩個關聯數組。
總結來說,array_udiff()函數是PHP中比較兩個或多個數組元素的常用函數之一,它通過自定義回調函數來比較數組元素的不同之處。在比較復雜類型的數組時,我們需要定義自己的回調函數來實現元素的比較。在實際應用中,array_udiff()一般與其他數組函數一起使用,用于處理有關的數組操作。