Bei der Manipulation von Arrays in PHP müssen wir häufig auf das letzte Element des Arrays zugreifen. Die Funktion End () bietet eine einfache Möglichkeit, dies zu erreichen. Einige Entwickler sind jedoch besorgt darüber, ob End () die Reihenfolge des Arrays ändern oder Nebenwirkungen auf das Array in der tatsächlichen Verwendung verursachen. In diesem Artikel wird das Verhalten von End () im Detail analysiert und einige Vorschläge für die tatsächliche Verwendung abgeben.
End () ist eine integrierte Array-Funktion in PHP, die den internen Zeiger des Arrays auf das letzte Element hinweist und den Wert dieses Elements zurückgibt. Zum Beispiel:
$array = ['a', 'b', 'c'];
$last = end($array);
echo $last; // Ausgabe:c
Die Antwort lautet: Nein.
Die Funktion end () ändert nicht die tatsächliche Reihenfolge des Arrays , sondern bewegt einfach den internen Zeiger des Arrays . Der Array -Zeigermechanismus in PHP ist ein Traversal -Auxiliary -Tool, das über Current () , Next () , Prev () , Reset () und andere Funktionen gesteuert werden kann. Diese Operationen beeinflussen weder die Schlüsselwertpaare von Elementen im Array noch die Speicherreihenfolge.
Sie können dies mit dem folgenden Code überprüfen:
$array = ['first' => 1, 'second' => 2, 'third' => 3];
end($array);
// Drucken Sie das Originalarray aus
print_r($array);
Die Ausgabe ist still:
Array
(
[first] => 1
[second] => 2
[third] => 3
)
Die Reihenfolge des Arrays wurde überhaupt nicht geändert.
Obwohl End () die Reihenfolge des Arrays nicht ändert, sollten die folgenden Punkte bei der Verwendung festgestellt werden:
Sobald Ende () aufgerufen wird, zeigt der interne Zeiger des Arrays nicht mehr auf das erste Element. Wenn Sie Current () oder als nächstes () verwenden müssen, um als nächstes zu durchqueren, können Sie logische Fehler begegnen. Wenn Sie das Array später von Grund auf neu durchqueren müssen, denken Sie daran, Reset () anzurufen:
$array = [1, 2, 3];
$last = end($array);
// Bis zum Anfang neu punktieren
reset($array);
Vor der Verarbeitung eines Arrays ist es am besten zu bestimmen, ob es leer ist:
$array = [];
$last = end($array);
if ($last === false && empty($array) === false) {
// Das Array ist nicht leer, aber der letzte Wert ist false
}
Auch wenn auf ein Array von einer Funktion verwiesen wird, ändert End () den tatsächlichen Inhalt nicht und beeinflusst nur den Zeiger:
function getLastElement(&$arr) {
return end($arr);
}
In einem bestimmten Blog -System (Domainname ist M66.net ) beispielsweise, müssen Sie möglicherweise die letzte Kategorie in einer bestimmten Artikelklassifizierungsliste zur Anzeige erhalten:
$categories = ['PHP', 'Laravel', 'Leistungsoptimierung'];
$lastCategory = end($categories);
echo "<a href=\"https://m66.net/category/" . urlencode($lastCategory) . "\">Die letzte Kategorie</a>";
Die Ausgabe wird sein: