'What is the difference between array_udiff_assoc() and array_diff_uassoc()?

What is the difference between array_udiff_assoc() and array_diff_uassoc()?

For array_udiff_assoc(), I have this code:

function myfunction($v1,$v2)
{
    if ($v1===$v2) {
        return 0;
    }
    return 1;
}
 
$a1 = ["a" => "Cat", "b" => "Dog", "c" => "Horse"];
$a2 = ["a" => "Cat", "b" => "Horse", "c" => "Dog"];
print_r(array_udiff_assoc($a1, $a2, "myfunction"));

result

Array ( [b] Dog [c] => Horse )

also array_diff_uassoc():

function myfunction($v1,$v2)
{
    if ($v1===$v2) {
        return 0;
    }
    return 1;
}
     
$a1 = ["a" => "Cat", "b" => "Dog", ​"c" => "Horse"];
​$a2 = ["a" => "Cat", "b" => "Horse", "c" => "Dog"];
​print_r(array_diff_uassoc($a1, $a2, "myfunction"));

The result is same as first one:

Array ( [b] Dog [c] => Horse )

If they have any difference, what is it? The PHP manual does not says that they are aliases of each other.



Solution 1:[1]

They both do the same, but udiff-assoc compares the DATA with the user supplied function, while diff-uassoc compares the INDEX with the user supplied function.

As an answer to @lonsesomeday : as indicated by the 'u', diff_assoc will use internal functions for all comparisons, and udiff_uassoc uses provided callbacks for index and data comparison.

http://www.php.net/manual/en/function.array-diff-uassoc.php

http://www.php.net/manual/en/function.array-udiff-assoc.php

Solution 2:[2]

array_udiff_assoc — Computes the difference of arrays with additional index check, compares data by a callback function
array_diff_uassoc — Computes the difference of arrays with additional index check which is performed by a user supplied callback function

So, the function differ in the place where they use the callback function. udiff_assoc uses the callback to compare elements, diff_uassoc uses the callback when comparing the indices.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Nanne
Solution 2 knittl