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