$new_array = array_diff_uassoc ($array1, $array2,....,my_function());
my_function() : is the callback function to return integer less than , equal to or greater than zero after comparing the keys. function my_function($a, $b)
{
if ($a === $b) {
return 0;
}
return ($a > $b)? 1:-1;
}
$first=array('One' =>'First','Two'=>'Second','Three'=>'Third','Fourth');
$second=array('One'=> 'First','Fourth','2nd');
$result=array_diff_uassoc($first,$second,"my_function");
while (list ($key, $val) = each ($result)) {
echo "$key -> $val <br>";
}
Output is here.
Two -> Second
Three -> Third
Keys of the first index are retained. ( no re-indexing done here) . The element with value Third is included in output as the index or key is not matching with $second array though the value is matching.
This example compares two associative arrays based on both keys and values using a custom function for key comparison.
$array1 = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry'];
$array2 = ['a' => 'apple', 'B' => 'banana', 'd' => 'date'];
function custom_compare($key1, $key2) {
return strcmp($key1, $key2); // Case-sensitive comparison
}
$result = array_diff_uassoc($array1, $array2, 'custom_compare');
print_r($result);
Output:
Array
(
[b] => banana
[c] => cherry
)
---
This example demonstrates removing items from the first array that have the same key and value as in the second array, with case-insensitive comparison.
More on string function strcasecmp()$array1 = ['A' => 'apple', 'b' => 'banana', 'C' => 'cherry'];
$array2 = ['a' => 'apple', 'B' => 'banana', 'd' => 'date'];
function case_insensitive_compare($key1, $key2) {
return strcasecmp($key1, $key2); // Case-insensitive comparison
}
$result = array_diff_uassoc($array1, $array2, 'case_insensitive_compare');
print_r($result);
Output:
Array
(
[C] => cherry
)
For case sensitive compare use strcmp()
$array1 = ['A' => 'apple', 'b' => 'banana', 'C' => 'cherry'];
$array2 = ['a' => 'apple', 'B' => 'banana', 'd' => 'date'];
function case_insensitive_compare($key1, $key2) {
return strcmp($key1, $key2); // Case-insensitive comparison
}
$result = array_diff_uassoc($array1, $array2, 'case_insensitive_compare');
print_r($result);
Output
Array ( [A] => apple [b] => banana [C] => cherry )