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.
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