Maison > développement back-end > tutoriel php > 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
Libérer: 2024-10-23 18:18:17
original
748 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal