phpbar.de logo

Mailinglisten-Archive

[php] array-pointer auf bestimmten key setzen

[php] array-pointer auf bestimmten key setzen

Sebastian Mendel lists at sebastianmendel.de
Die Mai 11 11:06:20 CEST 2004


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