проблема разности массивов
Я путаю array_diff поведение
Почему жанр не существует в массиве diff?
Вы знаете, как решить этот вопрос?
- код
<?php
$array1 = array
(
'value01' => '0',
'value02' => 'v2',
'genre' => '1',
'type' => 'text',
'contry' => 'us',
'data' => '1',
);
$array2 = array
(
'value01' => 'v1',
'value02' => 'v2',
'genre' => '0',
'type' => 'text',
'contry' => 'canada',
'data' => '1',
);
print_r(array_diff($array1,$array2));
- результат
$ php diff.php
Array
(
[contry] => us
)
2 ответов:
Поскольку значение
array_diffоперирует значениямимассива и игнорирует ключи.genreв вашем первом массиве равно1, это означает, что если значение1встречается для любого ключа во втором массиве, то ключgenreбудет удален из первого массива. Посмотрите на свои массивы без ключей, и вы поймете, что я имею в виду. По существу, у вас есть два списка значений:['0','v2','1','text','us','1']и['v1','v2','0','text','canada','1']. Единственное значение из первого списка, которое не отображается в второе - это'us'. Я предполагаю, что вы, вероятно, захотите взглянуть на array_key_diff() или array_diff_assoc().
Comments