Полное расхождение массивов по ключу в PHP

117
09 апреля 2022, 07:10

Функция array_diff_keys() не совсем так работает. Нужно чтобы результатом было полное расхождение. Т.е. все элементы из А которые отсутствуют в B и все элементы из B которые отсутствуют в А.

Т.е. так:

array_merge(array_diff_keys($a, $b), array_diff_keys($b, $a));

Есть ли проще варианты ?

Answer 1

array_diff_keys эквивалент операции над множествами "разность"

A\B={x|(x in A) and (x non in B)}

Вы хотите операцию симметрической разности:

A delta B = {x|(x in A and x in B) and (x not in AB)}

Соответственно симметрическая разность так и реализуется:

A delta B=(A\B)+(B\A)
array_merge(array_diff_keys($a, $b), array_diff_keys($b, $a));

В PHP реализованы операции объединения (array_merge), пересечения (array_intersect) и разности (array_diff). Остальные операции над множествами реализуются через их композицию.

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

READ ALSO
парсинг сайта avito.ru

парсинг сайта avito.ru

пробую распарсить вакансии с сайтаВ исходниках нашел такую ссылку

110
Уменьшит ли это нагрузку на процессор?

Уменьшит ли это нагрузку на процессор?

У меня на сайте генерируется xml-файлВыборку я сделал через цикл for кусками по 50 тыс записей за цикл (ранее была выборка сразу всех записей)

148
Как добавить данные в meta-data заказа?

Как добавить данные в meta-data заказа?

Магазин на WordPress с WooCommerce

183
Вывод всех категорий внутри карточки товара битрикс

Вывод всех категорий внутри карточки товара битрикс

В данным момент я реализовал вывод, но получаю только одну категорию(последнюю)

270