Est-ce que in_array()
effectue une comparaison d'objets lorsqu'il vérifie que tous les attributs sont identiques? Que faire si $obj1 === $obj2
, fera-t-il juste la comparaison de pointeur à la place? J'utilise un ORM, donc je préfère faire une boucle sur le test des objets si $obj1->getId()
est déjà dans le tableau s'il fait la comparaison d'objet. Sinon, in_array
est beaucoup plus concis.Comment in_array vérifie-t-il si un objet se trouve dans un tableau d'objets?
Répondre
in_array()
-t lâches comparaisons ($a == $b
) à moins que vous passez TRUE
au troisième argument, auquel cas il ne strictes comparaisons ($a === $b
).
sémantiquement, in_array($obj, $arr)
est identique à ceci:
foreach ($arr as &$member) {
if ($member == $obj) {
return TRUE;
}
}
return FALSE;
... et in_array($obj, $arr, TRUE)
est identique à ceci:
foreach ($arr as &$member) {
if ($member === $obj) {
return TRUE;
}
}
return FALSE;
... et de citer le manual sur ce que cela vérifie en fait:
Lorsque vous utilisez l'opérateur de comparaison (==), les variables d'objet sont compa rouge d'une manière simple, à savoir: Deux instances d'objet sont égales si elles ont les mêmes attributs et valeurs, et sont des instances de la même classe. En revanche, lors de l'utilisation de l'opérateur d'identité (===), les variables d'objet sont identiques si et seulement si elles se réfèrent à la même instance de la même classe.
Les objets sont toujours des références en PHP 5+ et ne peuvent être copiés (créant ainsi un nouvel objet) qu'en utilisant clone
. Cela signifie que vous devriez pouvoir utiliser in_array()
.
- 1. in_array ne trouve pas de valeurs dans le tableau
- 2. comment vérifier si un objet existe dans un tableau qui se trouve dans une classe globale en C#
- 3. Comment voir si une valeur ou un objet se trouve dans un champ QuerySet
- 4. Javascript: vérifier si un élément d'un tableau se trouve dans un autre tableau
- 5. Comment puis-je déterminer si un élément ne se trouve pas dans un tableau?
- 6. Déterminer si un point se trouve dans un rectangle
- 7. PHP in_array objet comparatif?
- 8. Savoir si un composant se trouve dans un conteneur spécifique
- 9. Que faire si je veux savoir si un objet se trouve dans un NSArray ou non par son adresse?
- 10. Dans Bash, comment voyez-vous si une chaîne ne se trouve pas dans un tableau?
- 11. Dans Ruby, comment savoir si une chaîne ne se trouve pas dans un tableau?
- 12. Comment détecter si un objet se trouve dans une portée 'using'?
- 13. Comment vérifier si un objet se trouve en dehors du volume de détourage dans OpenGL?
- 14. PHP in_array ne trouve pas de valeur
- 15. php in_array() dans un foreach
- 16. PHP in_array() ne trouve pas le contenu qui est dans un tableau
- 17. Comment passer par référence un sous-tableau qui se trouve dans un tableau 2D alloué dynamiquement?
- 18. Comment utiliser cv :: imdecode, si le contenu d'un fichier image se trouve dans un tableau char?
- 19. Comment déterminer si un point se trouve sur Quad2DCurve
- 20. comment demander à un tableau si un objet est contenu?
- 21. Comment puis-je vérifier si un thread se trouve dans un bloc ou une méthode synchronisée?
- 22. iphone development: comment vérifier si un objet se trouve sur l'écran du téléphone
- 23. Comment cacher une partie d'un objet TROIS.PlaneBufferGeometry lorsqu'il se trouve dans un autre objet?
- 24. in_array et tableau multidimentionnelle
- 25. Comment puis-je ajouter une valeur dans un tableau qui se trouve dans un struct (Swift)
- 26. comment détecter si un point se trouve dans une région non-rectangulaire dans un tableau numpy 2D?
- 27. Trouver si un angle se trouve entre deux points
- 28. Comment placer un objet dans un tableau
- 29. Comment déterminer si un fichier se trouve dans un lecteur amovible ou dans le lecteur local
- 30. Comment vérifier si un clic de souris se trouve dans un cercle dans pygame?
Génial, merci. Il y a une minuterie stupide, donc je ne peux pas accepter pour 5 autres minutes. – yellottyellott