PHP obtenir la différence de deux tableaux d'objets
Je sais qu'il est array_diff
et array_udiff
pour comparer la différence entre deux tableaux, mais comment pourrais-je le faire avec deux tableaux d'objets?
array(4) {
[0]=>
object(stdClass)#32 (9) {
["id"]=>
string(3) "205"
["day_id"]=>
string(2) "12"
}
}
Mes tableaux sont comme celui-ci, je suis curieux de voir la différence de deux tableaux basés sur les Id.
Vous devez vous connecter pour publier un commentaire.
C'est exactement ce que
array_udiff
est pour. Écrire une fonction qui compare deux objets de la façon dont vous voulez, puis de direarray_udiff
d'utiliser cette fonction. Quelque chose comme ceci:Ou, si vous utilisez PHP >= 5.3, vous pouvez simplement utiliser un fonction anonyme au lieu de déclarer une fonction:
==
à-
.-
qui a été me jetant hors.Voici une autre option, si vous souhaitez exécuter le diff en fonction de l'objet instances. Vous pouvez utiliser ce que votre rappel à
array_udiff
:Vous ne souhaitez utiliser que si vous êtes certains que les tableaux contiennent uniquement des objets - voici mon cas d'utilisation.
return $a === $b ? 0 : -1
? Ne serait-il pas faire de même en comparant les variables d'objet pointant vers la même instance d'objet?Et ici est une autre option si vous voulez comparer les propriétés de la chaîne (par exemple, nom):