peat_a: end() in foreach-schleife

Beitrag lesen

Hallo Mitstreiter,
vielen Dank schonmal vorweg, dass sich jemand dieser Frage annimmt. Es geht darum, ob innerhalb einer foreach-schleife mit reset() oder end() überprüft werden kann, ob der erste bzw. letzte Wert des in der foreach-Schleife verwendeten Arrays gerade durchlaufen wird. Hier ein Beispiel:

foreach ($array as $key => $value)
{

if ($value == reset($array))
 {
  echo $value." ist der erste Wert des durchlaufenen Arrays!"
 }

if ($value == end($array))
 {
  echo $value." ist der letzte Wert des durchlaufenen Arrays!"
 }
}

Das Problem könnte auftauchen, weil der interne Zeiger von $array innerhalb der if-Anweisung auf seinen ersten/letzten Wert gesetzt wird und die Schleife also nur einmal oder endlos durchlaufen wird. In php4 funktionert das Konstrukt einwandfrei, aber ich bin mir nicht sicher, ob das auch so dokumentiert ist. Lt. php.net wird in der foreach-schleife nur eine Kopie von $array verwendet, aber der interne Zeiger des originalen Arrays trotzdem bewegt??? Ich bin mir im Klaren darüber, dass es dafür einfache workarounds gibt, aber es würde viel Arbeit verursachen, alle Skripte umzuschreiben. Daher wollte ich vorher wissen, ob es notwendig ist oder nicht. Vielen Dank nochmal im Voraus.
peat_a