Maison  >  Article  >  développement back-end  >  Comment trouver la différence entre des tableaux d’objets en fonction des valeurs de colonne ?

Comment trouver la différence entre des tableaux d’objets en fonction des valeurs de colonne ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-23 17:58:14498parcourir

How to Find the Difference Between Arrays of Objects Based on Column Values?

Trouver la différence entre des tableaux d'objets en fonction des valeurs de colonnes

Déterminer les différences entre deux tableaux d'objets peut être difficile lors de l'utilisation d'un tableau conventionnel -fonctions de comparaison comme array_diff ou array_udiff. Cependant, une fonction personnalisée peut être utilisée pour faciliter la comparaison de propriétés d'objet spécifiques.

Considérez le tableau d'objets suivant :

<code class="php">array(4) {
    [0]=>
        object(stdClass)#32 (9) {
            [&quot;id&quot;]=>
            string(3) &quot;205&quot;
            [&quot;day_id&quot;]=>
            string(2) &quot;12&quot;
        }
}</code>

Pour identifier la différence entre deux de ces tableaux en fonction du Colonne "id", une fonction de comparaison personnalisée peut être définie :

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

Cette fonction soustrait les propriétés "id" de deux objets, ce qui donne une valeur numérique qui indique la différence entre eux.

Le code suivant utilise la fonction compare_objects pour déterminer la différence entre deux tableaux d'objets :

<code class="php">$first_array = // Array of objects
$second_array = // Array of objects

$diff = array_udiff($first_array, $second_array, 'compare_objects');</code>

La fonction array_udiff compare les objets du premier et du deuxième tableaux à l'aide de la fonction compare_objects. Le résultat, stocké dans $diff, contient les objets présents dans un tableau mais pas dans l'autre.

En PHP >= 5.3, une fonction anonyme peut être utilisée à la place d'une fonction nommée :

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

Cette approche simplifiée permet d'obtenir les mêmes fonctionnalités que la fonction compare_objects. L'utilisation de ces méthodes de comparaison personnalisées permet d'identifier efficacement les différences entre des tableaux d'objets en fonction de valeurs de colonnes spécifiques.

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