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!