Et ?a ? C'est plus concis et tout est sur une seule ligne.
foreach ((array) $items as $item) { // ... }
Personnellement, je pense que c'est le plus propre - je ne sais pas si c'est le plus efficace, remarquez?!
if (is_array($values) || is_object($values)) { foreach ($values as $value) { ... } }
La raison de ma préférence est qu'il n'alloue pas de tableau vide lorsque vous n'avez rien pour commencer.