Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 11-01-2004, 12:12
beebob
 PHP Junior
Links : Onlinestatus : beebob ist offline
Registriert seit: Jul 2002
Ort: Köln
Beiträge: 604
beebob ist zur Zeit noch ein unbeschriebenes Blatt
Standard

den zeiger selber setzt du gerade ja mit next, prev!
um das zu verdeutlichen, habe ich dir hier ein bsp. gecodet,
an dem du das erkennen kannst.

so ungefähr macht man das in java. es gibt zwar dort auch arrays, jedoch keine assoziativen als elementaren datentyp.

das bsp. unten ist sozusagen der ansatz für 'eigene' assoziative arrays

PHP-Code:
/* 
   die eigentliche funktion.
   mit & übergibt man eine referenz statt einer kopie
   des arrays an die funktionen. 
   sonst klappt das mit dem array pointer nicht.
*/
function getElement$which$arr )
{
    
// erstmal checken, ob $which im bereich des arrays liegt
    
if( count$arr ) == )
    {
        die( 
"EmptyArrayException in getElement()!" );
    }
    else if( 
$which >= count$arr ) || $which )
    {
        die( 
"IndexOutOfBound************ception in getElement()!" );
    }
    
    
// array counter
    
$pos 0;
    
// erstes value
    
$curr current( &$arr );
    
    
// wenn 'elemente' da sind...
    
while( hasMoreElements( &$arr ) )
    {
        
// ... und der counter der gewünschten position entspricht ...
        
if( $pos == $which )
        {
            
// ... dann gib mir das aktuelle element ...
            
return $curr;
        }
        
        
// ... ansonsten derzeitiges value für den nächsten durchlauf speichern.
        
$curr current( &$arr );
        
$pos++;
    }
    
    
// falls nur ein element
    
return $curr;
}

/* hilfsfunktion: checkt, ob noch weitere elemente vorhanden sind */
function hasMoreElements$arr )
{
    if( 
next( &$arr ) )
    {
        return 
TRUE;
    }
    else
    {
        return 
FALSE;
    }
}

$arr = array( "peter""paule""gunther" );
echo 
getElement2, &$arr ); // gibt 'gunther' aus und setzt den zeiger eine stelle hinter 2, sofern enthalten 

Geändert von beebob (11-01-2004 um 12:25 Uhr)
Mit Zitat antworten