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);