Moin!
PHPs foreach funktioniert nicht nur mit array sondern mit jedem Objekt das das IteratorAggregate-Interface implementiert (array tut das auch).
Nein, echte Arrays implementieren kein Interface, weil sie kein Objekt sind. PHP erkennt intern am Typ, ob es nativ iterieren kann, oder ob ein Objekt ein iterierbares Interface anbietet.
Ich spekuliere jetzt über die exakte implementation aber das sollte es vielleicht etwas klarer machen, foreach könnte man auch so implementieren (die methode next() ist hier beschrieben http://www.php.net/manual/en/class.iterator.php):
$my_array = array(1,2,3,4);
$iterator = $my_array.getIterator();
while($item = $iterator.next()) {
echo $item;
}
Das ist KEIN PHP-Code. Er ist falsch. Also davon nicht verwirren lassen.
> wäre das gleiche wie:
>
> ~~~php
$my_array = array(1,2,3,4);
> foreach($my_array as $item) {
> echo $item;
> }
Es gibt keinen Grund, foreach NICHT zu verwenden. foreach ist die performanteste Art, in PHP zu iterieren.
- Sven Rautenberg