Mailinglisten-Archive |
Markus Kiennen schrieb: >> gibt es eine möglichkeit den array pointer direkt auf ein bestimmtes >> Array-Element zu setzen ohne das gesamte Array bis zu diesem Element >> durchlaufen zu müssen? >> >> >> - der Schlüssel ist bekannt >> - das Array ist nicht assoziativ (die Schlüssel sind INT, nicht STRING) >> - benötigt wird der Schlüssel davor und danach >> - die Schlüssel sind nicht auf- oder absteigend >> - Schlüssel-Reihenfolge muss beibehalten werden > > Da es offensichtlich keine Sortierung der Schlüssel gibt wirst du das > erste Element suchen müssen. Ein direkter Zugriff darauf kann kaum gehen ) > > Danach könnte man z.B. mit > next($array) > key($array) > prev($array) > prev($array) > key($array) > > das auslesen. Das ist zwar net so richtig schön, sind aber letztendlich > 3 zeigerbewegungen + 2 direkte arrayzugriffe. Ja danke dir, hat aber leider nichts mit meiner Frage zu tun. :-/ ich habs bisher so: <code> List::getNextIdById( $array_key ) { $array_key = (int) $array_key; // check if given key is in array, if not return false if ( ! array_key_exists( $array_key, $this->results ) ) { return false; } // check current array pointer position if ( key($this->results) !== $array_key ) { // search the whole array reset($this->results); while ( key($this->results) !== $array_key ) { next($this->results); } } if ( next($this->results) ) { return key($this->results); } else { return $this->last_element; } } </code -- Sebastian Mendel (www.sebastianmendel.de) *www.warzonez.de* | www.tekkno4u.de | www.nofetish.com
php::bar PHP Wiki - Listenarchive