"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como encontrar a diferença de array para arrays de objetos com base em uma coluna de propriedades?

Como encontrar a diferença de array para arrays de objetos com base em uma coluna de propriedades?

Publicado em 2024-11-21
Navegar:157

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

Obtendo diferença de array para arrays de objetos com base na coluna de propriedades

No domínio da programação PHP, as funções array_diff e array_udiff fornecem meios para determinar as diferenças entre dois arrays. No entanto, ao lidar com arrays de objetos, uma abordagem personalizada é necessária.

Um array de objetos, como o mostrado:

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

representa um desafio único, especialmente se alguém deseja determinar a diferença com base nos valores de uma coluna específica, como "id" no exemplo.

Para resolver isso, a função array_udiff vem em nosso auxílio. É necessário um terceiro parâmetro, que é uma função definida pelo usuário responsável por comparar os objetos. Ao criar uma função de comparação adequada, podemos instruir array_udiff a realizar a operação desejada.

Aqui está um exemplo de como conseguir isso:

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

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

No PHP 5.3 , funções anônimas podem ser empregadas em vez de declarar uma função separada:

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

Com essas técnicas, agora você possui a capacidade de determinar efetivamente a diferença entre matrizes de objetos comparando os valores de qualquer coluna ou propriedade desejada.

Declaração de lançamento Este artigo foi reimpresso em: 1729665317 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3