проблема разности массивов



Я путаю 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
)
550   2  

2 ответов:

Я полагаю, что вы хотите использовать array_diff_assoc

Http://www.php.net/manual/en/function.array-diff-assoc.php

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

    Ничего не найдено.