Works like the PHP array_diff() function, but with multidimensional arrays.
Via composer:
composer require rogervila/array-diff-multidimensional
use Rogervila\ArrayDiffMultidimensional; $new = [ 'a' => 'b', 'c' => [ 'd' => 'e', 'f' => 'Hello', ], ]; $old = [ 'a' => 'b', 'c' => [ 'd' => 'e', 'f' => 'Goodbye', ], ]; // Compare the arrays by calling the 'compare' class method $result = ArrayDiffMultidimensional::compare($new, $old) // Or by calling the global helper function $result = array_diff_multidimensional($new, $old) var_dump($result);
The result of comparing $new with $old will return a new array with the changes:
[ 'c' => [ 'f' => 'Hello' ], ]
Comparisons are strict by default, but you can specify that you want to make a loose comparison passing a boolean as the third parameter for compare method or calling the looseComparison
// Passing 'false' as a third parameter will deactivate the strict comparison mode ArrayDiffMultidimensional::compare($new, $old, false); array_diff_multidimensional($new, $old, false); // This method call is equivalent ArrayDiffMultidimensional::looseComparison($new, $old);
Also, a strictComparison method is available for more clarity
// Comparisons are strict by default ArrayDiffMultidimensional::compare($new, $old); array_diff_multidimensional($new, $old); // This method call is equivalent ArrayDiffMultidimensional::strictComparison($new, $old);
Array Diff Multidimensional is an open-sourced package licensed under the MIT license.