In diesem Tutorial möchte ich Ihnen genauer erklären, wie Sie mit Hilfe der current() Funktion in PHP den Inhalt ausgeben können, auf den der Arrayzeiger aktuell zeigt. Jedes Array besitzt einen Zeiger, über den das Array auf die gespeicherten Werte zugreifen kann.
Der Zeiger kann von PHP automatisch, zum Beispiel beim Verarbeiten eines Arrays in einer foreach Schleife, oder auch vom Programmierer selbst manuell, zum Beispiel durch die Verwendung der next() Funktion, beliebig verschoben werden. Mit der current() Funktion kann dann der Wert zurückgegeben werden, auf den der Arrayzeiger im Moment des Aufrufs zeigt. Dazu muss man der Funktion nur das entsprechende Array übergeben, dessen aktuell angezeigter Wert ausgegeben werden soll.
Die genaue Syntax der Funktion lautet demnach einfach:
current(Array);
Das folgende kleine Beispiel zeigt die Verwendung der current() Funktion innerhalb eines PHP Scripts.
Grundlegendes Beispiel
<?php
$array = array('PHP 3', 'PHP 4', 'PHP 5', 'PHP 6');
echo current($array);
?>
Ausgabe: PHP 3
Im Beispiel werden dem Array $array vier Werte zugeteilt. Der Zeiger des Arrays steht nach der Erstellung mit array() auf dem ersten Element. Wenn nun current() aufgerufen wird, gibt die Funktion den Wert zurück, auf den der Zeiger gerade zeigt. Das ist in diesem Fall 'PHP 3'.
Die Ausgabe des Beispiels: PHP 3
Die Erklärung zum Beispiel:
Im Beispiel werden dem Array $array vier Werte zugeteilt. Der Zeiger des Arrays bleibt bei der Verwendung des array(), auf dem als ersten übergebenen Wert. Wenn nun die current() Funktion damit aufgerufen wird, den Wert hinter dem aktuellen Arrayzeiger des übergebenen Arrays auszugeben, so ergibt sich daraus die Ausgabe von 'PHP 3'.
Navigation durch ein Array mit current(), next() und prev()
Die Funktion current() zeigt ihren wahren Nutzen erst im Zusammenspiel mit den Navigationsfunktionen next(), prev(), reset() und end(). Mit diesen Funktionen können Sie den internen Arrayzeiger gezielt verschieben und jederzeit den aktuellen Wert abfragen.
<?php
$sprachen = array('PHP', 'Python', 'Java', 'Ruby');
echo current($sprachen);
/* Ausgabe: PHP */
next($sprachen);
echo current($sprachen);
/* Ausgabe: Python */
next($sprachen);
echo current($sprachen);
/* Ausgabe: Java */
prev($sprachen);
echo current($sprachen);
/* Ausgabe: Python */
?>
Mit next() wird der Zeiger um eine Position nach vorne verschoben, mit prev() um eine Position zurück. Der Aufruf von current() gibt danach immer den Wert an der aktuellen Zeigerposition zurück.
Den Zeiger zurücksetzen mit reset() und end()
Wenn Sie den Arrayzeiger auf den Anfang oder das Ende eines Arrays setzen möchten, verwenden Sie reset() bzw. end(). Das ist besonders dann hilfreich, wenn Sie vorher durch das Array navigiert haben und zum Ausgangspunkt zurückkehren wollen.
<?php
$farben = array('Rot', 'Blau', 'Gelb');
/* Zeiger ans Ende setzen */
end($farben);
echo current($farben);
/* Ausgabe: Gelb */
/* Zeiger an den Anfang */
reset($farben);
echo current($farben);
/* Ausgabe: Rot */
?>
Verhalten bei leeren Arrays und am Arrayende
Wenn das übergebene Array keine Elemente enthält, gibt current() den Wert false zurück. Das Gleiche passiert, wenn der interne Zeiger über das letzte Element hinaus verschoben wurde, zum Beispiel durch einen zusätzlichen Aufruf von next() am Ende des Arrays.
<?php
$leer = array();
var_dump(current($leer));
/* Ausgabe: bool(false) */
$zahlen = array(10, 20);
next($zahlen);
next($zahlen);
/* Zeiger steht jetzt hinter dem letzten Element */
var_dump(current($zahlen));
/* Ausgabe: bool(false) */
reset($zahlen);
echo current($zahlen);
/* Ausgabe: 10 */
?>
current() mit assoziativen Arrays
Die Funktion current() funktioniert auch mit assoziativen Arrays. Sie gibt dabei immer den Wert an der aktuellen Zeigerposition zurück. Den passenden Schlüssel können Sie mit der Funktion key() auslesen.
<?php
$person = array(
'name' => 'Max Mustermann',
'alter' => 30,
'stadt' => 'Berlin'
);
echo key($person) . ': ' . current($person);
/* Ausgabe: name: Max Mustermann */
next($person);
echo key($person) . ': ' . current($person);
/* Ausgabe: alter: 30 */
?>
Wichtiger Hinweis: current() nach foreach
Seit PHP 7 setzt eine foreach-Schleife den internen Arrayzeiger nicht mehr zuverlässig zurück. Nach dem Durchlaufen steht der Zeiger hinter dem letzten Element, und current() gibt false zurück. Wenn Sie nach einer foreach-Schleife erneut auf den Zeiger zugreifen möchten, setzen Sie ihn mit reset() zurück.
<?php
$tiere = array('Hund', 'Katze', 'Vogel');
foreach ($tiere as $tier) {
/* Schleife durchlaufen */
}
var_dump(current($tiere));
/* Ausgabe: bool(false) */
reset($tiere);
echo current($tiere);
/* Ausgabe: Hund */
?>
Übersicht der verwandten Funktionen
PHP bietet mehrere Funktionen, um den internen Arrayzeiger zu steuern. Die folgende Tabelle gibt einen schnellen Überblick.
| Funktion | Beschreibung |
|---|
current() | Gibt den Wert an der aktuellen Zeigerposition zurück |
key() | Gibt den Schlüssel an der aktuellen Zeigerposition zurück |
next() | Verschiebt den Zeiger um eine Position nach vorne |
prev() | Verschiebt den Zeiger um eine Position zurück |
reset() | Setzt den Zeiger auf das erste Element |
end() | Setzt den Zeiger auf das letzte Element |