Table of Content

Документація каже “Вираховує відмінність масивів використовуючи compare_function (callback) для порівняння”. Здається просто, але не зовсім.

Функція використовує принцип сортування, і очікує, що одне з наступних значень -1, 0, 1, буде повернуто з compare_function. На stackoverflow знайшов пояснення як це працює. Продублюю тут: “В compare_function ви можете повернути 0, сказавши, що об’єкти однакові, та -1, сказавши, що вони різні”.

Примітка: Зайнявшись відладкою даної функції, дізнався, що замість -1 можна повертати 1.

Важливо звернути увагу, на те, що функція повертає масив, який містить всі значення масиву array1, які не були представлені в інших аргументах (масивах).

Приклад виконання

$oldCountry = ['DE'];
$newCountry = ['IT', 'ES'];
$diff = array_udiff($oldCountry, $newCountry, function($a, $b) {
    return ($a === $b) ? 0 : 1;
});

var_export($diff); // array (0 => 'DE')
Last modified: 20.06.2018

Author

Comments

Write a Reply or Comment

Your email address will not be published.