Maison  >  Article  >  développement back-end  >  Comment trouver la différence de tableau pour les tableaux d’objets en fonction d’une colonne de propriétés ?

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

DDD
DDDoriginal
2024-10-23 14:40:57440parcourir

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>

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>

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>

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!

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