Current Location: Home> Latest Articles> How to use callback function to implement the "ignor case" comparison logic of array_diff_ukey key name in PHP?

How to use callback function to implement the "ignor case" comparison logic of array_diff_ukey key name in PHP?

M66 2025-05-15

In PHP, array_diff_ukey() is a very practical function that compares the "key names" of two or more arrays and returns those elements in the first array whose key names do not appear in other arrays .

Usually, this function uses a callback function to customize the way key names are compared. However, the default key name comparison is case sensitive, that is, 'Key' and 'key' will be considered two different key names.

But what if we want to ignore case for comparison (i.e. 'Key' and 'key' are considered the same keys)? The answer is to use a custom callback function to implement case-insensitive comparison logic.

Sample code

Here is an example showing how to use array_diff_ukey() and a callback function to ignore case when comparing key names:

 <?php

$array1 = [
    "UserID" => 1,
    "Email" => "user1@m66.net",
    "Name" => "Alice"
];

$array2 = [
    "userid" => 2,
    "email" => "user2@m66.net"
];

// Custom comparison functions:Ignore case comparison
function compareKeysCaseInsensitive($key1, $key2) {
    return strcasecmp($key1, $key2); // return0Indicates equality
}

$result = array_diff_ukey($array1, $array2, "compareKeysCaseInsensitive");

print_r($result);

Output result

 Array
(
    [Name] => Alice
)

As shown above, although there is UserID and Email in $array1 , since there is userid and email in $array2 , they are equal after ignoring case and are therefore excluded from the result.

In the end, only Name is left because it does not have an item that has "key name equal (ignoring case)".

Summarize

If you need to compare key names when processing arrays but want to ignore case differences , array_diff_ukey() with strcasecmp() is a very concise and powerful combination:

  • Use array_diff_ukey() to compare key names

  • Use strcasecmp() as a callback function to implement case-insensitive comparison logic

This is especially useful when handling user input, database field names, or any data that may differ in case but is semantic consistent.

Hope this article is helpful for you to understand and use PHP array functions!