Malabarismo de tipo em PHP

Eu sempre tenho que me lembrar que o PHP faz conversões de tipo ao comparar operandos. Tive um comportamento realmente inesperado ao iterar por meio de um objeto JSON usando os iteradores SPL e pesquisar um valor de chave específico.

Eu sabia que o valor seria encontrado duas vezes, mas acabei achando 6 vezes. Acontece que o iterador estava detectando uma série de matrizes enum e avaliando como verdadeiro quando encontrou o primeiro elemento da matriz. O valor da chave que eu estava procurando estava sendo convertido em um inteiro quando encontrou a chave 0 de um array normal e então avaliado como verdadeiro.

Esta é a citação específica no manual de PHP online:

Se você comparar um número com uma string ou se a comparação envolver strings numéricas, cada string será convertida em um número e a comparação será realizada numericamente.

Manual de PHP »
Referência de linguagem» Operadores de comparação

A página Type Juggling na Referência de Linguagem do PHP também apresenta algumas informações adicionais sobre esse comportamento.

Manual de PHP »
Referência de linguagem» Malabarismo de tipo