Sven Rautenberg: Rausfinden, ob mit foreach iterierbar

Beitrag lesen

Moin!

Auch wenn die beiden bereits is_array() geantwortet haben, für PHP ab Version 5 darf man is_object() nicht vergessen, da auch Objekte iterierbar sind, wenn sie speziell aufbereitet wurden.

is_object() reicht da aber auch noch nicht, denn auf instanceof Iterator und IteratorAggregate sollte ebenfalls geprüft werden.

Nicht notwendig, da beide Interfaces von Traversable erben. Der Test auf dieses Interface reicht aus, um zu entscheiden, ob ein Objekt mit foreach iterierbar ist.

Also wäre die Prüfung: array oder (object und (Iterator oder IteratorAggregate))

is_array oder instanceof Traversable

- Sven Rautenberg