Mailinglisten-Archive |
Hallo Alex, > Ok, also die next Variante funktioniert ... > Versuche ich allerdings das Ganze von hinten aufzurollen ... klappt dies > leider nicht ... > Ich kann meinen (Denk)fehler leider nicht erkennen ... > > Funktioniert: > --- > foreach ($mein_array as $value) { > next($mein_array); > if($value == $_GET["pos"]) { > $mode=current($mein_array); > break; > } > > } > > Funktioniert nicht: > --- > end($mein_array); #zum Ende springen > foreach ($mein_array as $value) { #Array durchlaufen > prev($mein_array); > if($value == $_GET["pos"]) { > $mode=current($mein_array); > break; > } > } Du arbeitest unbewusst auf zwei verschiedenen Arrays [1]. foreach() arbeitet immer auf einer KOPIE des Arrays. Außerdem wird der Arrayzeiger immer zurückgesetzt vorher. D.h. dein end() ist unwirksam. Weiterhin ist dein Code mehr als Doppelt. Zum einen iterierst du über das Array mit foreach() und gehst zum andern intern vorwärts oder rückwärts. Eins von beiden reicht. Also entweder nur foreach oder per while-Schleife das Array mit next() bzw. prev() durchgehen. Aber letztendlich holst du dir doch nur das x. Element aus dem Array. Sind die Indizes nicht korrekt durchnummeriert oder assoziativ, weswegen du nicht gleich explizit zugreifen kannst ($mein_array[3]) ? Falls dem so sei kannst du wegweisend folgendes Konstrukt verwenden: // bis zum 3. Element gehen for ($i = 0; $i < 2; $i++) { prev($mein_array); } // element nehmen $mode = current($mein_array); Grüße, Niels 1: http://www.php.net/manual/de/control-structures.foreach.php
php::bar PHP Wiki - Listenarchive