php array_diff_assoc () дает неправильную разницу - PullRequest
1 голос
/ 27 марта 2012

У меня есть два массива, и я использую функцию array_diff_assoc () php для получения разницы, но она всегда возвращает значение comm, установленное как разность, но это должно быть новое значение q, что не так с этимПомогите, пожалуйста,

массивы -

Array ( [0] => Array ( [12] => new q sets ) [1] => Array ( [11] => common set ) ) 

Array ( [0] => Array ( [11] => common set ) ) 

после использования array_diff_assoc () op

Array ( [1] => Array ( [11] => common set ) ) 

Ответы [ 2 ]

6 голосов
/ 27 марта 2012

Два значения из пар ключ => значения считаются равными, только если (string) $elem1 === (string) $elem2.Другими словами, проводится строгая проверка, поэтому строковые представления должны быть одинаковыми.

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

Значение (string) любого массива равно "Array". Таким образом, ваш вызов array_diff_assoc эффективно сравнивает эти две вещи:

Array ( [0] => "Array" [1] => "Array" ) 
Array ( [0] => "Array" ) 

Поскольку вещь, которая отличается между этими двумя, - это пара [1] ключ / значение из первого массиваВы получите это обратно ([1] => Array( [11] => common set )).

1 голос
/ 27 марта 2012

в array_diff_assoc (), ключи также сравниваются. Поскольку [0] доступно во втором массиве, а [1] недоступно во втором массиве, поэтому результатом является массив ([1] => массив ([11] => общий набор)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...