Se voc√™ receber um erro “N√≠vel de aninhamento muito profundo” ao usar in_array em uma cole√ß√£o do Doctrine

Quando o Doctrine retorna um monte de objetos, eles s√£o encapsulados em um ArrayCollection, o que permite trat√°-los como um simples array PHP, entre outros.

Isso significa que você pode, por exemplo, executar um

in_array($object, $doctrineCollection);

e espere encontrar a proverbial agulha no palheiro.

Mas se você estiver lidando com objetos de complexidade média, você pode entrar neste erro

‚ÄúNesting level too deep ‚Äď recursive dependency?‚ÄĚ

Conforme explicado aqui

Parece que, por padrão, in_array faz comparação não estrita (equivalente a uma operação ==) ao testar o palheiro para a agulha. Isso significa que ele verifica se todas as propriedades são iguais, o que significa que ele começa a percorrer o gráfico do objeto, e isso pode causar problemas se você tiver referências circulares nesse gráfico.

Felizmente

A função in_array tem um modo estrito, entretanto, que até onde eu posso dizer é o equivalente a uma operação ===.

o que significa que você deve verificar se

in_array($object, $doctrineCollection, TRUE);