What are the limitations of array_diff() function in PHP?

The array_diff() function in PHP only compares values and not keys when finding the difference between two arrays. If you also want to compare keys, you will need to use a custom function or loop through the arrays manually to check for both keys and values.

// Custom function to find the difference between two arrays based on keys and values
function array_diff_assoc_recursive($array1, $array2) {
    $difference = [];
    foreach ($array1 as $key => $value) {
        if (is_array($value) && isset($array2[$key]) && is_array($array2[$key])) {
            $recursiveDiff = array_diff_assoc_recursive($value, $array2[$key]);
            if (count($recursiveDiff)) {
                $difference[$key] = $recursiveDiff;
            }
        } else {
            if (!array_key_exists($key, $array2) || $array2[$key] !== $value) {
                $difference[$key] = $value;
            }
        }
    }
    return $difference;
}

$array1 = ['a' => 'apple', 'b' => 'banana', 'c' => ['x' => 'x-ray', 'y' => 'yellow']];
$array2 = ['a' => 'apple', 'b' => 'blueberry', 'c' => ['x' => 'x-ray', 'z' => 'zebra']];

$result = array_diff_assoc_recursive($array1, $array2);

print_r($result);