Question :
Fonctions héritées telles que array_diff et array_udiff sont conçus pour comparer des tableaux de valeurs scalaires. Comment pouvons-nous déterminer la différence entre deux tableaux d'objets, que nous voulons comparer en fonction d'une valeur de propriété spécifique ?
Solution :
Heureusement, array_udiff peut être exploité pour répondre à cette exigence. Nous définissons une fonction de comparaison personnalisée qui se concentre sur la propriété souhaitée, puis utilisons array_udiff pour déterminer la différence entre les deux tableaux.
Considérez les exemples de tableaux suivants :
<code class="php">$array1 = array( (object) ['id' => '205', 'day_id' => '12'], ... ); $array2 = array( (object) ['id' => '205', 'day_id' => '13'], ... );</code>
Notre objectif est pour identifier les différences entre ces tableaux en fonction de la propriété id. Pour y parvenir, nous pouvons créer une fonction de comparaison :
<code class="php">function compare_objects($obj_a, $obj_b) { return $obj_a->id - $obj_b->id; }</code>
Cette fonction compare la propriété id de deux objets et renvoie la différence sous forme d'entier. Nous utilisons ensuite array_udiff comme suit :
<code class="php">$diff = array_udiff($array1, $array2, 'compare_objects');</code>
Alternativement, avec PHP 5.3 et supérieur, nous pouvons utiliser une fonction anonyme à des fins de comparaison :
<code class="php">$diff = array_udiff($array1, $array2, function ($obj_a, $obj_b) { return $obj_a->id - $obj_b->id; } );</code>
Cette solution calcule efficacement la différence entre deux tableaux d’objets en comparant la valeur de propriété spécifiée. Le tableau $diff résultant contiendra des objets représentant les éléments uniques de $array1 ou $array2 en fonction des critères de comparaison.
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!