Как использовать array_diff, чтобы получить недостающий элемент

У меня проблемы с использованием array_diff правильно.
У меня есть 2 массива:

$arr_1 = array(
0 => array('name' => 'Day Rate 2', 'from' => 1200, 'to' => 1400),
1 => array('name' => 'Day Rate 2', 'from' => 2000, 'to' => 2000),
);

$arr_2 = array(
0 => array('name' => 'Day Rate 2', 'from' => 0, 'to' => 1000),
1 => array('name' => 'Day Rate 2', 'from' => 1200, 'to' => 1400),
2 => array('name' => 'Day Rate 3', 'from' => 2000, 'to' => 4000),
);

Я хочу получить значения в $ arr_2 которые не присутствуют в $ arr_1. Я хочу вернуть это:

0 => array('name' => 'Day Rate 2', 'from' => 0, 'to' => 1000)

Чтобы сравнить их, я сначала сериализовал значения каждого элемента и создал эти два сериализованных массива, которые я могу использовать для сравнения, используя array_diff.

foreach ($arr_1 as $key => $val) {
$arr_1_simple[$key] = serialize(array($val['from'], $val['to']));
}

foreach ($arr_2 as $key => $val) {
$arr_2_simple[$key] = serialize(array($val['from'], $val['to']));
}

Array
(
[0] => a:2:{i:0;i:1200;i:1;i:1400;}
[1] => a:2:{i:0;i:2000;i:1;i:2000;}
)
Array
(
[0] => a:2:{i:0;i:0;i:1;i:1000;}
[1] => a:2:{i:0;i:1200;i:1;i:1400;}
[2] => a:2:{i:0;i:2000;i:1;i:4000;}
)

поскольку a:2:{i:0;i:1200;i:1;i:1400;} а также a:2:{i:0;i:2000;i:1;i:4000;} находятся как в $ arr_1, так и в $ arr_2, нечетный a:2:{i:0;i:0;i:1;i:1000;}, что я и думал, что array_diff вернет.

Тем не менее, результат, который я получаю:

print_r(array_diff($arr_2_simple, $arr_1_simple));

Array
(
[0] => a:2:{i:0;i:0;i:1;i:1000;}
[2] => a:2:{i:0;i:2000;i:1;i:4000;}
)

Может кто-нибудь сказать мне, почему a:2:{i:0;i:2000;i:1;i:4000;} возвращается? Я хочу, чтобы все элементы в $ arr_2 отсутствовали в $ arr_1. Как мне это получить?

2

Решение

Ваше значение в массиве 1

[1] => a:2:{i:0;i:2000;i:1;i:2000;}

не соответствует значению в массиве 2

[2] => a:2:{i:0;i:2000;i:1;i:4000;}
1

Другие решения

array_diff($arr1, $arr2), Вот $arr1 массив для сравнения и $arr2 массив для сравнения Функция возвращает массив, содержащий все записи из $ arr1, которых нет $ arr2. пример

Случай 1 array_diff($arr1, $arr2)

$arr1 = [1, 2, 3];
$arr2 = [1,3, 4];
print_r(array_diff($arr1, $arr2)); //Output: [2]

Дело: 2 array_diff($arr2, $arr1)

$arr1 = [1, 2, 3];
$arr2 = [1,3, 4];
print_r(array_diff($arr2, $arr1)); //output: [4]
1