W3docs

Die PHP-array-Funktion end() verstehen

In PHP sind arrays einer der am häufigsten verwendeten Datentypen. Erfahren Sie, wie die Funktion end() das letzte Element eines arrays zurückgibt.

In PHP sind arrays einer der am häufigsten verwendeten Datentypen. Arrays können eine Sammlung von Daten in einer einzigen Variable speichern, die einfach manipuliert und durchlaufen werden kann. Eine der Funktionen zur Manipulation von arrays ist die Funktion end().

Im einfachsten Fall gibt die Funktion end() den letzten Wert eines arrays zurück. Intern verschiebt sie außerdem den internen Zeiger des arrays auf das letzte Element – ein Detail, das die meisten übersehen. In diesem Artikel behandeln wir die Syntax der Funktion end(), ihre praktische Verwendung, die Interaktion mit dem internen Zeiger sowie häufige Fallstricke – leere arrays und assoziative arrays –, über die man stolpern kann.

Syntax

Die Syntax der Funktion end() ist unkompliziert:

end(array &$array): mixed

Dabei ist $array das array, dessen letztes Element zurückgegeben werden soll. Zwei Dinge sind erwähnenswert:

  • Das array wird per Referenz übergeben (&$array), weil end() den internen Zeiger des arrays verändert. Deshalb muss eine echte Variable übergeben werden, kein direkt geschriebener Ausdruck wie end([1, 2, 3]) – das erzeugt in älteren PHP-Versionen einen Hinweis und in PHP 8.1+ einen schwerwiegenden Fehler.
  • Der Rückgabetyp ist mixed: Es wird der Wert des letzten Elements zurückgegeben oder false, wenn das array leer ist.

Verwendung

Sehen wir uns genauer an, wie die Funktion end() in der Praxis funktioniert. Betrachten wir folgendes array:

Ein PHP-Array

$fruits = array('apple', 'banana', 'cherry');

Um das letzte Element dieses arrays mit end() abzurufen, würde man folgenden Code verwenden:

php— editable, runs on the server

Nach der Ausführung dieses Codes enthält $last_fruit den string 'cherry'.

Den Array-Zeiger verschieben

Jedes PHP-array hat einen internen Zeiger, der eine „aktuelle" Position verfolgt. Der Aufruf von end() verschiebt diesen Zeiger auf das letzte Element. Die anderen Zeigerfunktionen verschieben ihn ebenfalls: reset() springt zurück zum ersten Element, next() macht einen Schritt vorwärts, prev() einen Schritt zurück, und current() liest das Element an der aktuellen Zeigerposition, ohne ihn zu bewegen.

Da end() den Zeiger auf dem letzten Element belässt, gibt ein unmittelbar darauf folgender Aufruf von current() denselben letzten Wert zurück:

<?php

$fruits = ['apple', 'banana', 'cherry'];

end($fruits);
echo current($fruits);

Dieser Code gibt folgendes aus:

cherry

Wenn Sie ein array in umgekehrter Reihenfolge durchlaufen möchten, versuchen Sie das nicht durch wiederholten Aufruf von end() – der Zeiger bewegt sich nie über das letzte Element hinaus, sodass eine Schleife mit end() nie enden würde. Verwenden Sie stattdessen array_reverse() (oder eine normale indizierte for-Schleife, die von count($array) - 1 herunter zählt):

<?php

$fruits = ['apple', 'banana', 'cherry'];

foreach (array_reverse($fruits) as $fruit) {
    echo $fruit . "<br>";
}

Dieser Code gibt folgendes aus:

cherry
banana
apple

Häufige Fallstricke

Bei der Verwendung der Funktion end() gibt es einige häufige Fallstricke zu beachten:

Leere Arrays

Wenn das an end() übergebene array leer ist, gibt die Funktion false zurück. Das ist mehrdeutig: false ist auch ein legitimer Wert, den ein nicht leeres array enthalten kann, sodass eine einfache Prüfung ein falsches Ergebnis liefern kann.

php— editable, runs on the server

Um sicherzugehen, prüfen Sie zuerst, ob das array leer ist (mit empty() oder count()), oder verwenden Sie den strikten Vergleich !== false:

php— editable, runs on the server

Assoziative Arrays

Die Funktion end() gibt immer den Wert des letzten Elements zurück, unabhängig davon, ob das array indiziert oder assoziativ ist:

php— editable, runs on the server

Wenn Sie den letzten Schlüssel eines assoziativen arrays abrufen möchten, verwenden Sie stattdessen die Funktion array_key_last():

php— editable, runs on the server

end() vs array_pop()

Ein häufiger Verwechslungspunkt ist der Unterschied zwischen end() und array_pop(). Beide liefern das letzte Element, aber:

  • end() liest den letzten Wert und lässt das array unverändert (es verschiebt nur den internen Zeiger).
  • array_pop() entfernt das letzte Element und gibt es zurück, wodurch das array um ein Element kleiner wird.

Verwenden Sie end(), wenn Sie nur einen Blick auf den letzten Wert werfen möchten; verwenden Sie array_pop(), wenn Sie das Element tatsächlich aus dem array entfernen möchten.

Verwandte Funktionen

Die Funktion end() gehört zur Familie der internen Zeigerfunktionen in PHP. Diese Kapitel behandeln den Rest:

  • reset() — verschiebt den Zeiger auf das erste Element und gibt es zurück.
  • current() — liest das Element an der aktuellen Zeigerposition.
  • next() — rückt den Zeiger vor und gibt das nächste Element zurück.
  • prev() — setzt den Zeiger zurück und gibt das vorherige Element zurück.
  • array_reverse() — gibt eine umgekehrte Kopie des arrays zurück, für eine saubere Rückwärtsiteration.
  • array_pop() — entfernt das letzte Element und gibt es zurück.

Fazit

In diesem Artikel haben wir die Funktion end() in PHP ausführlich betrachtet, einschließlich ihrer Syntax, Verwendung und häufiger Fallstricke. Obwohl sie wie eine einfache Funktion wirkt, gibt es einige wichtige Nuancen, die man beim Einsatz berücksichtigen sollte. Wenn Sie verstehen, wie end() funktioniert, können Sie häufige Fehler vermeiden und diese Funktion in Ihrem PHP-Code optimal einsetzen.

Diagramm

Hier ist ein Diagramm, das die Verwendung der Funktion end() veranschaulicht:

graph TD
A[Array] --> B(end())
B --> C{Check result}
C --> |True| D(Return last element)
C --> |False| E(Handle empty array)

Übungen

Übung
Was ist der Zweck der Funktion end() in PHP?
Was ist der Zweck der Funktion end() in PHP?
Was this page helpful?