«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как найти разницу в массивах объектов на основе столбца свойств?

Как найти разницу в массивах объектов на основе столбца свойств?

Опубликовано 21 ноября 2024 г.
Просматривать:303

How to Find Array Difference for Object Arrays Based on a Property Column?

Получение разницы массивов объектов на основе столбца свойств

В области программирования PHP функции array_diff и array_udiff предоставляют средства для определения различий между двумя массивами. Однако при работе с массивами объектов необходим индивидуальный подход.

Массив объектов, например показанный:

array(4) {
    [0]=>
        object(stdClass)#32 (9) {
            ["id"]=>
            string(3) "205"
            ["day_id"]=>
            string(2) "12"
        }
}

представляет собой уникальную проблему, особенно если нужно определить разницу на основе значений определенного столбца, например «id» в примере.

Для решения этой проблемы используется функция array_udiff. нам на помощь. Он принимает третий параметр — определяемую пользователем функцию, отвечающую за сравнение объектов. Создав подходящую функцию сравнения, мы можем поручить array_udiff выполнить нужную операцию.

Вот пример того, как этого добиться:

function compare_objects($obj_a, $obj_b) {
  return $obj_a->id - $obj_b->id;
}

$diff = array_udiff($first_array, $second_array, 'compare_objects');

В PHP 5.3 вместо объявления отдельной функции можно использовать анонимные функции:

$diff = array_udiff($first_array, $second_array,
  function ($obj_a, $obj_b) {
    return $obj_a->id - $obj_b->id;
  }
);

Благодаря этим методам теперь у вас есть возможность эффективно определять разницу между массивами объектов путем сравнения значений из любого желаемого столбца или свойства.

Заявление о выпуске Эта статья перепечатана по адресу: 1729665317. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3