3v4l.org

run code in 500+ PHP versions simultaneously
<?php $a = [ [ 'id' => 20, 'created_at' => '2020-11-22', 'updated_at' => '2020-11-22 11:16:22', 'name' => 'AA', ], [ 'id' => 19, 'created_at' => '2020-11-27 11:16:22', 'updated_at' => null, 'name' => 'BB', ] ]; $b = [ [ 'id' => 20, 'created_at' => '2020-11-22 11:16:11', 'updated_at' => '2020-11-22 11:16:22', 'name' => 'AA', ], [ 'id' => 19, 'created_at' => '2020-11-27 11:16:22', 'updated_at' => null, 'name' => 'BB', ] ]; function array_diff_by_keys(array $a, array $b, array $keys = null) { if (empty($keys)) $keys = array_keys(reset($a)); $compare = function ($x, $y) use ($keys) { foreach ($keys as $key) { $diff = $x[$key] <=> $y[$key]; if ($diff) return $diff; } return $diff; }; return array_udiff($a, $b, $compare); } print_r(array_diff_by_keys($a, $b)); print_r(array_diff_by_keys($a, $b, ['id', 'created_at', 'updated_at']));
Output for 8.4.1 - 8.4.23, 8.5.0 - 8.5.8
Deprecated: array_diff_by_keys(): Implicitly marking parameter $keys as nullable is deprecated, the explicit nullable type must be used instead in /in/1dPON on line 34 Array ( [0] => Array ( [id] => 20 [created_at] => 2020-11-22 [updated_at] => 2020-11-22 11:16:22 [name] => AA ) ) Array ( [0] => Array ( [id] => 20 [created_at] => 2020-11-22 [updated_at] => 2020-11-22 11:16:22 [name] => AA ) )
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.32, 8.3.0 - 8.3.32
Array ( [0] => Array ( [id] => 20 [created_at] => 2020-11-22 [updated_at] => 2020-11-22 11:16:22 [name] => AA ) ) Array ( [0] => Array ( [id] => 20 [created_at] => 2020-11-22 [updated_at] => 2020-11-22 11:16:22 [name] => AA ) )

preferences:
111.73 ms | 1488 KiB | 4 Q