Current Location: Home> Latest Articles> Forgot to pass in a custom comparison function, it causes an error

Forgot to pass in a custom comparison function, it causes an error

M66 2025-06-06

Why does it cause an error if I forget to pass in a custom comparison function when using array_diff_uassoc ?

In PHP, array_diff_uassoc() is a very useful function that compares key-value pairs of two or more arrays and finds differences based on custom key-value comparison functions. When we use array_diff_uassoc() , if we forget to pass in the custom comparison function, we will encounter an error problem.

Introduction to array_diff_uassoc() function

The array_diff_uassoc() function compares key-value pairs of two or more arrays and returns an array containing differences. Unlike array_diff_assoc() , array_diff_uassoc() allows us to pass in a custom comparison function to compare key values. The syntax is as follows:

 array_diff_uassoc(array $array1, array $array2, callable $value_compare_func): array
  • array1 : The first array.

  • array2 : The second array, or more arrays are used for comparison.

  • value_compare_func : A custom comparison function to compare key-value pairs in an array.

Code Example

Here is a simple example showing how to work properly using array_diff_uassoc() :

 <?php
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3
];

$array2 = [
    'a' => 1,
    'b' => 3,
    'd' => 4
];

// Custom comparison functions,Compare values
function compare_values($value1, $value2) {
    return $value1 - $value2;
}

$result = array_diff_uassoc($array1, $array2, 'compare_values');

print_r($result);
?>

Output result:

 Array
(
    [b] => 2
    [c] => 3
)

In the above code, array_diff_uassoc() compares the key-value pairs in two arrays according to the compare_values ​​function, and returns the key-value pairs in the array that are different from the array2 array.

Why does forgetting to pass in a custom comparison function lead to an error?

If we forget to pass in the custom comparison function when calling array_diff_uassoc() , PHP will throw an error. The third parameter of the array_diff_uassoc() function is a callback function that compares the values ​​of array elements. If this callback function is not passed in, PHP cannot perform key-value comparisons, and an error will naturally occur.

Error example:

 <?php
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3
];

$array2 = [
    'a' => 1,
    'b' => 3,
    'd' => 4
];

// 忘记传入Custom comparison functions
$result = array_diff_uassoc($array1, $array2);

print_r($result);
?>

Output error:

 Warning: array_diff_uassoc() expects parameter 3 to be a valid callback in /path/to/script.php on line X

As shown above, PHP will throw a warning that our third parameter (custom comparison function) must be a valid callback function. If we do not pass this parameter, PHP will not be able to continue performing array comparisons, which will cause the program to be interrupted and an error.

Solution

The solution to this problem is very simple, just make sure that when calling array_diff_uassoc() , a valid custom comparison function is always provided. For example, in the previous example, we use the compare_values ​​function as the third parameter:

 $result = array_diff_uassoc($array1, $array2, 'compare_values');

Make sure to pass a valid callback function every time array_diff_uassoc() is called, so that you will not encounter any errors.

Summarize

array_diff_uassoc() is a powerful PHP function that allows us to compare differences between array key-value pairs based on custom rules. However, if we forget to pass in the custom comparison function, we will encounter an error. Therefore, make sure to always provide a valid callback function to avoid this error.