Реализация стека на PHP

Реализация стека на основе массивов в функциональном стиле при помощи функций push() и pop(). Демонстрация работы со стеком.

<?php
 
function push(&$stack, $val) {
	array_push($stack, $val); //запись в конец массива с динамическим изменением размера
}
 
function pop(&$stack) {
	if (count($stack) == 0) return null; //стек пуст
 
	$ans = $stack[count($stack)-1]; //извлекаем последний элемент массива
	$stack = array_slice($stack, 0, count($stack)-1); //обрезаем последний элемент массива
	return $ans;
}
 
//----------------------------------------------------
 
$stack = ["initial"]; //создаём стек
echo "Initial: ";
print_r($stack); //автоматический вывод массива
echo "<br><br>";
 
echo "Push 'new': ";
push($stack, "new"); //заносим строку "new" в стек
print_r($stack);
echo "<br><br>";
 
echo "Pop: ".pop($stack).", "; //извлекаем верхний элемент ("new") из стека
print_r($stack);
echo "<br><br>";
 
echo "Pop: ".pop($stack).", "; //извлекаем верхний элемент ("initial") из стека
print_r($stack);
echo "<br><br>";
 
$pop_val = pop($stack);
echo "Pop: ".(isset($pop_val) ? $pop_val : "NULL"); //пытаемся извлечь элемент из пустого стека, получаем NULL
 
?>

Вывод:

Initial: Array ( [0] => initial )
 
Push 'new': Array ( [0] => initial [1] => new )
 
Pop: new, Array ( [0] => initial )
 
Pop: initial, Array ( )
 
Pop: NULL
Направление: