Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

Array-Zeiger steuern mit next, prev, reset und end

Sie befinden sich: Home > Php Tutorial > Array-Zeiger steuern mit...

Array-Zeiger steuern mit next, prev, reset und end


Eintrag am:  02.09.2010
Hits / Besucher:  5298
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Jedes Array in PHP besitzt einen internen Zeiger, der auf das aktuelle Element zeigt. Mit den Funktionen next(), prev(), reset() und end() lässt sich dieser Zeiger gezielt bewegen. In den meisten Fällen übernimmt foreach diese Arbeit automatisch, aber für bestimmte Szenarien ist die manuelle Steuerung nützlich.

Übersicht der Zeiger-Funktionen

Alle vier Funktionen erwarten ein Array als Parameter und geben den Wert des Elements zurück, auf das der Zeiger nach der Verschiebung zeigt:

<?php

$farben = ['Rot', 'Grün', 'Blau', 'Gelb'];

echo current($farben); // Rot (aktuelles Element)
echo next($farben); // Grün (eins vorwärts)
echo next($farben); // Blau
echo prev($farben); // Grün (eins zurück)
echo end($farben); // Gelb (letztes Element)
echo reset($farben); // Rot (zurück zum Anfang)
?>

current() liest den Wert, ohne den Zeiger zu bewegen. next() und prev() verschieben ihn um eine Stelle. end() springt ans Ende, reset() an den Anfang.

Verhalten am Array-Ende

Wenn next() über das letzte Element hinausgeht, gibt die Funktion false zurück. Der Zeiger steht dann hinter dem Array und current() liefert ebenfalls false:

<?php

$zahlen = [10, 20];

echo current($zahlen); // 10
echo next($zahlen); // 20
echo next($zahlen); // false (Ende erreicht)
echo current($zahlen); // false

/* Zeiger zurücksetzen */
echo reset($zahlen); // 10
?>

Mit reset() lässt sich der Zeiger jederzeit an den Anfang zurücksetzen, um das Array erneut zu durchlaufen.

Praxisbeispiel: Nächstes Element vorausschauen

Ein sinnvoller Einsatz von next() ist das Vorausschauen auf das nächste Element, etwa um Trennzeichen zwischen Einträgen zu setzen:

<?php

$staedte = ['Berlin', 'Hamburg', 'München'];

while ($stadt = current($staedte)) {
echo $stadt;

if (next($staedte) !== false) {
echo ', ';
}
}
/* Ausgabe: Berlin, Hamburg, München */
?>

Nach dem letzten Element gibt next() den Wert false zurück, sodass kein überflüssiges Komma ausgegeben wird. Für diesen konkreten Fall ist allerdings implode(', ', $staedte) die elegantere Lösung.

Wann Zeiger-Funktionen statt foreach?

In der Praxis wird foreach für fast alle Array-Iterationen verwendet. Die Zeiger-Funktionen sind dann sinnvoll, wenn nur ein bestimmtes Element gelesen werden soll (etwa das erste mit reset() oder das letzte mit end()), ohne das gesamte Array zu durchlaufen:

<?php

$log = [
'08:00 Server gestartet',
'08:15 Backup abgeschlossen',
'09:30 Fehler in Modul X'
];

echo 'Erster Eintrag: ' . reset($log);
echo 'Letzter Eintrag: ' . end($log);
?>

Für das erste Element bietet PHP seit Version 7.3 auch array_key_first() und array_key_last() als Alternativen, die nur den Schlüssel liefern, ohne den internen Zeiger zu verändern.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.