Maison  >  Article  >  développement back-end  >  Comment comparer des objets dans des tableaux en fonction des valeurs de propriété ?

Comment comparer des objets dans des tableaux en fonction des valeurs de propriété ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-23 14:50:43714parcourir

How Can You Compare Objects in Arrays Based on Property Values?

Comparer des objets dans des tableaux en fonction des valeurs de propriété

Déterminer les différences entre deux tableaux d'objets peut être un défi. Bien que des fonctions telles que array_diff et array_udiff existent pour les tableaux standards, les objets nécessitent une approche personnalisée.

Pour comparer des objets en fonction d'une propriété spécifique, suivez ces étapes :

  1. Définissez un Fonction de comparaison : Créez une fonction qui prend deux objets comme paramètres et renvoie la différence entre les valeurs de leurs propriétés souhaitées.
  2. Utilisez array_udiff avec la fonction de comparaison : Transmettez les tableaux d'objets et la fonction de comparaison avec array_udiff. Cette fonction utilisera la fonction de comparaison pour déterminer les différences entre les objets.

Par exemple, considérons les tableaux d'objets suivants :

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

Pour trouver la différence entre eux en fonction sur la propriété id, définissez une fonction de comparaison comme celle-ci :

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

Ensuite, utilisez array_udiff pour comparer les tableaux :

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

Alternativement, si vous utilisez PHP >= 5.3, vous peut utiliser une fonction anonyme :

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

Cette approche vous permet de comparer efficacement des objets dans des tableaux en fonction des valeurs de propriété souhaitées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn