Table of Content
Array values may look the same, but keys can differ. The array_diff_assoc in PHP finds differences by both values and keys at once.
Understand the array_diff_assoc Function in PHP
The array_diff_assoc() function compares two or more arrays by both value and key. It returns the parts from the first array that do not exist in the others with the same key.
Here is the syntax:
array_diff_assoc($array1, $array2, ...$arrays)$array1: the main array for comparison.$array2, ...$arrays: one or more arrays to check against.- Returns: array of values from
$array1that do not match in both key and value.
The function checks each element of the first array. It looks at both the key and the value. If another array has the same key but a different value, the element stays in the result. If the key or value match, the element drops out.
Here is a quick example:
$first = ["a" => 1, "b" => 2, "c" => 3];
$second = ["a" => 1, "b" => 5, "d" => 3];
$result = array_diff_assoc($first, $second);
print_r($result);The output will be:
Array
(
[b] => 2
[c] => 3
)
It returns key-value pairs from the first array that don’t match in the second.
The Difference Between array_diff and array_diff_assoc
The array_diff() looks only at values, while the array_diff_assoc() looks at both keys and values. Use the first one when keys don’t matter, use the second when they do.
array_diff()→ values only.array_diff_assoc()→ keys and values.
You can use the array_diff_assoc() when the strict comparison of arrays that must include both the key and the value.
Examples of the array_diff_assoc in PHP
Compare Two Arrays with Different Keys:
$first = ["x" => 10, "y" => 20, "z" => 30];
$second = ["x" => 10, "a" => 20, "z" => 25];
$result = array_diff_assoc($first, $second);
print_r($result);This example returns y => 20 and z => 30 because the first array has no match for key y and a different value for z.
The output:
Array
(
[y] => 20
[z] => 30
)
Compare Three Arrays:
$first = ["id" => 101, "name" => "Ali", "role" => "Admin"];
$second = ["id" => 101, "name" => "Ali", "role" => "User"];
$third = ["id" => 101, "name" => "Omar", "role" => "Admin"];
$result = array_diff_assoc($first, $second, $third);
print_r($result);It returns an empty array because every key-value in the first array appears in at least one of the others.
Compare Arrays with Nested Keys:
$first = ["p1" => "Book", "p2" => "Pen", "p3" => "Pad"];
$second = ["p1" => "Book", "p2" => "Pencil", "p3" => "Pad"];
$result = array_diff_assoc($first, $second);
print_r($result);The output:
Array
(
[p2] => Pen
)
This example returns p2 => Pen because both arrays share the same key, but the value is different.
Strict Key and Value Match:
$first = [0 => "Car", 1 => "Bus", 2 => "Bike"];
$second = [0 => "Car", 2 => "Bike", 3 => "Train"];
$result = array_diff_assoc($first, $second);
print_r($result);This example returns 1 => Bus because the first array has a key and value pair that does not match in the second array.
Wrapping Up
You learned the syntax of array_diff_assoc and how it checks both keys and values. You also learned how it differs from array_diff and how to use it in real code.
Here is a quick recap:
array_diff_assoc()helps you to compare arrays by both keys and values.- It returns unmatched parts from the first array.
- You can use it when a strict comparison of key and value is required.
- It differs from
array_diff()because that one ignores keys.
FAQs
What does PHP array_diff_assoc do?
- Syntax: array_diff_assoc($array1, $array2, ...);
- Checks: Both key and value are compared strictly.
$a = ["id" => 101, "name" => "Ali"];
$b = ["id" => 101, "name" => "Omar"];
print_r(array_diff_assoc($a, $b));
What is the difference between array_diff and array_diff_assoc?
- array_diff: Ignores keys.
- array_diff_assoc: Considers both keys and values.
$a = ["id" => 101, "name" => "Ali"];
$b = ["id" => 101, "name" => "Ali"];
print_r(array_diff($a, $b)); // []
print_r(array_diff_assoc($a, $b)); // []
How do you use array_diff_assoc with multiple arrays?
- Pass the first array.
- Add one or more arrays to compare.
- Result keeps unique key-value pairs.
$a = ["id" => 101, "name" => "Ali", "city" => "Riyadh"];
$b = ["id" => 101, "name" => "Omar"];
$c = ["city" => "Riyadh"];
print_r(array_diff_assoc($a, $b, $c));
Similar Reads
Escape characters appeared in PHP because some symbols in strings serve special purposes. For example, a quote can end a…
The array_diff function compares arrays and returns values that exist in the first array but not in the others in…
Whether you are just trying to keep your app from crashing or making sure your users’ uploads don’t accidentally overwrite…
PHP array_merge_recursive joins two or more arrays into one nested array and keeps all values with their keys. Syntax of…
The filter_var_array() appeared to make input validation simple and sanitization in PHP. It handles multiple inputs with different filters was…
Programming is all about choices. Everything you do in code boils down to answering a question: What should happen if…
In PHP, manipulation of XML data can be very critical when most systems' data exchange relies on the format. XML—Extensible…
The PHP named arguments are the names of the arguments through which the values are passed, allowing you to add…
The NOT operator in PHP (!) provides the reverse of whatever truth value is given by a certain expression. It’s…
Actually, PHP has a built-in function that doesn’t get the spotlight—fclose(). It ends the file manipulation code. Let’s break down…