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

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

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

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

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

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!

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