Comment trouver la différence de tableau pour les tableaux d'objets en fonction d'une colonne de propriétés ?

DDD
Libérer: 2024-10-23 14:40:57
original
501 Les gens l'ont consulté

How to Find Array Difference for Object Arrays Based on a Property Column?

Obtention de la différence de tableau pour les tableaux d'objets en fonction de la colonne de propriétés

Dans le domaine de la programmation PHP, les fonctions array_diff et array_udiff fournissent des moyens de déterminer les différences entre deux tableaux. Cependant, lorsqu'il s'agit de tableaux d'objets, une approche personnalisée est nécessaire.

Un tableau d'objets, tel que celui illustré :

<code class="php">array(4) {
    [0]=>
        object(stdClass)#32 (9) {
            ["id"]=>
            string(3) "205"
            ["day_id"]=>
            string(2) "12"
        }
}</code>
Copier après la connexion

pose un défi unique, surtout si l'on souhaite pour déterminer la différence en fonction des valeurs d'une colonne spécifique, comme "id" dans l'exemple.

Pour résoudre ce problème, la fonction array_udiff nous vient en aide. Il prend un troisième paramètre, qui est une fonction définie par l'utilisateur chargée de comparer les objets. En créant une fonction de comparaison appropriée, nous pouvons demander à array_udiff d'effectuer l'opération souhaitée.

Voici un exemple de la façon d'y parvenir :

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

$diff = array_udiff($first_array, $second_array, 'compare_objects');</code>
Copier après la connexion

En PHP 5.3, des fonctions anonymes peuvent être utilisées au lieu de déclarer une fonction distincte :

<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

Avec ces techniques, vous possédez désormais la possibilité de déterminer efficacement la différence entre des tableaux d'objets en comparant les valeurs de n'importe quelle colonne ou propriété souhaitée.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal