Estava fazendo um trabalho no qual eu precisava trazer uma lista de dados de um banco para colocar numa combobox no HTML e acabei tendo um problema: a lista iria crescer demasiadamente e eu teria que fazer com que essa caixa pudesse, mesmo ficando grande, não dando problemas de timeout no php.
A solução: ArrayIterator (pensei).
Porém em um dado momento a minha lista vinha vazia (e isso só fui perceber depois, debuggando) e gerava a seguinte exceção:
"Passed variable is not an array or object, using empty array instead."
Depois de debuggar e debuggar, deixei minha preguiça de lado e fui até o fim e vi que não havia dados e aquilo que era para ser um array vinha false.
A dica é: Sempre que for usar um ArrayIterator, valide se a variável que será passada para ele como parâmetro é realmente um array, senão você pode receber uma mensagem dessa que mostrei acima.