In PHP ist Stack eine Datenstruktur, die zuerst in und out ist (LIFO, zuerst in der ersten Out). Im Stapel werden die Addition und Entfernung von Elementen von der Oberseite des Stapels durchgeführt. Der Stapel wird häufig verwendet, um einige Szenarien zu implementieren, die eine Logik (Spat-In-First-Out-Out-Out-Out) erfordern, wie z. B. Rückgängiggänge, Browserverlauf usw. Obwohl PHP keine integrierte Stapeldatenstruktur aufweist, können wir Arrays verwenden, um Stapelvorgänge zu simulieren.
Unter den gemeinsamen Operationen des Stapels besteht eine allgemeine Anforderung: Sehen Sie sich das obere Element des Stapels an , löschen Sie ihn jedoch nicht. Dies wird als Peek Operation bezeichnet. Für PHP -Arrays, obwohl wir die Funktion array_pop () verwenden können, um das obere Element zu eröffnen, ist es der Zweck des Peek -Betriebs, nur das obere Element des Stapels anzuzeigen, ohne den Status des Stapels selbst zu ändern.
In PHP namens End () gibt es eine sehr nützliche Funktion, die das letzte Element im Array zurückgibt. Wir können es verwenden, um Peek -Operationen auf dem Stapel zu implementieren. Schauen wir uns die spezifische Implementierungsmethode an.
Wir simulieren zuerst einen einfachen Stapel und verwenden PHP -Arrays, um den Betrieb des Stapels zu simulieren.
<?php
// Initialisieren Sie den Stapel
$stack = [];
// Stapelbetrieb
array_push($stack, 'first');
array_push($stack, 'second');
array_push($stack, 'third');
// Der Status des Ausgabestapels
print_r($stack);
?>
Führen Sie den Code aus und die Ausgabe ist:
Array
(
[0] => first
[1] => second
[2] => third
)
Zu diesem Zeitpunkt ist das oberste Element des Stapels "dritter" .
Um Peek -Operationen zu implementieren, können wir die Funktion End () verwenden. Die Funktion End () gibt das letzte Element des Arrays zurück, dh das obere Element des Stapels.
<?php
// Peek arbeiten:Sehen Sie sich das obere Element des Stapels an
$top = end($stack);
// Ausgangsstapel -Top -Element
echo "Das obere Element des Stapels ist: " . $top . PHP_EOL;
?>
Die Ausgabe ist:
Das obere Element des Stapels ist: third
Die Funktion End () verschiebt den inneren Zeiger des Arrays auf das letzte Element, löscht das Element jedoch nicht. Daher bleibt der Stapel nach der Durchführung des Peek -Betriebs unverändert. Diese Funktion eignet sich sehr für Peek -Operationen in Stapelstrukturen, da wir die Elemente nur oben im Stapel anzeigen müssen und den Stapel nicht ändern möchten.
Der Fall eines leeren Stacks : Wenn der Stapel leer ist, gibt End () false zurück. Bevor Sie End () verwenden, ist es am besten zu prüfen, ob der Stapel leer ist, um Fehler zu vermeiden.
<?php
if (!empty($stack)) {
$top = end($stack);
echo "Das obere Element des Stapels ist: " . $top . PHP_EOL;
} else {
echo "Der Stapel ist leer,Nicht ausführen peek arbeiten。" . PHP_EOL;
}
?>
Interner Zeiger des Arrays : Die Funktion End () ändert den internen Zeiger des Arrays, aber für Stapelvorgänge wirkt sich die Änderung des internen Zeigers nicht auf andere Operationen des Stapels aus (wie Stack -Eintrag, Stapelausgang usw.).
Hier finden Sie einen vollständigen Beispielcode, der Stack -Eintrag, Stack -Ausgang und Peek -Operationen enthält:
<?php
// Initialisieren Sie den Stapel
$stack = [];
// Stapelbetrieb
array_push($stack, 'first');
array_push($stack, 'second');
array_push($stack, 'third');
// Peek arbeiten:Sehen Sie sich das obere Element des Stapels an
if (!empty($stack)) {
$top = end($stack);
echo "Das obere Element des Stapels ist: " . $top . PHP_EOL;
} else {
echo "Der Stapel ist leer,Nicht ausführen peek arbeiten。" . PHP_EOL;
}
// 出栈arbeiten:Entfernen Sie das obere Element des Stacks
$removed = array_pop($stack);
echo "Das entfernte Element ist: " . $removed . PHP_EOL;
// Peek arbeiten:再次Sehen Sie sich das obere Element des Stapels an
if (!empty($stack)) {
$top = end($stack);
echo "Das obere Element des Stapels ist: " . $top . PHP_EOL;
} else {
echo "Der Stapel ist leer,Nicht ausführen peek arbeiten。" . PHP_EOL;
}
?>
Ausgangsergebnis:
Das obere Element des Stapels ist: third
Das entfernte Element ist: third
Das obere Element des Stapels ist: second
Durch die Verwendung der Funktion end () können wir den Peek -Betrieb des Stapels problemlos implementieren und die Elemente oben auf dem Stapel betrachten, ohne den Status des Stapels zu ändern. Diese Methode ist einfach und effizient und ist sehr geeignet für Szenarien, die Stapeldatenstrukturen in PHP simulieren.