Maison  >  Article  >  développement back-end  >  Comment déterminer la différence entre les tableaux d'objets en comparant des valeurs de propriétés spécifiques ?

Comment déterminer la différence entre les tableaux d'objets en comparant des valeurs de propriétés spécifiques ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-23 18:18:17642parcourir

How to Determine the Difference Between Object Arrays by Comparing Specific Property Values?

Détermination de la différence entre deux tableaux d'objets en comparant des valeurs de propriété spécifiques

Question :

Fonctions héritées telles que array_diff et array_udiff sont conçus pour comparer des tableaux de valeurs scalaires. Comment pouvons-nous déterminer la différence entre deux tableaux d'objets, que nous voulons comparer en fonction d'une valeur de propriété spécifique ?

Solution :

Heureusement, array_udiff peut être exploité pour répondre à cette exigence. Nous définissons une fonction de comparaison personnalisée qui se concentre sur la propriété souhaitée, puis utilisons array_udiff pour déterminer la différence entre les deux tableaux.

Considérez les exemples de tableaux suivants :

<code class="php">$array1 = array(
    (object) ['id' => '205', 'day_id' => '12'],
    ...
);

$array2 = array(
    (object) ['id' => '205', 'day_id' => '13'],
    ...
);</code>

Notre objectif est pour identifier les différences entre ces tableaux en fonction de la propriété id. Pour y parvenir, nous pouvons créer une fonction de comparaison :

<code class="php">function compare_objects($obj_a, $obj_b) {
  return $obj_a->id - $obj_b->id;
}</code>

Cette fonction compare la propriété id de deux objets et renvoie la différence sous forme d'entier. Nous utilisons ensuite array_udiff comme suit :

<code class="php">$diff = array_udiff($array1, $array2, 'compare_objects');</code>

Alternativement, avec PHP 5.3 et supérieur, nous pouvons utiliser une fonction anonyme à des fins de comparaison :

<code class="php">$diff = array_udiff($array1, $array2,
  function ($obj_a, $obj_b) {
    return $obj_a->id - $obj_b->id;
  }
);</code>

Cette solution calcule efficacement la différence entre deux tableaux d’objets en comparant la valeur de propriété spécifiée. Le tableau $diff résultant contiendra des objets représentant les éléments uniques de $array1 ou $array2 en fonction des critères de comparaison.

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