<?php
/**
* 通过 PHP 数组实现简单的顺序栈
*/
class SimpleStack
{
private $_stack = [];
private $_size = 0;
public function __construct($size = 10)
{
$this->_size = $size;
}
// 获取栈顶元素
public function pop()
{
// 空栈
if (count($this->_stack) == 0) {
return false;
}
//array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一
//Note: 使用此函数后会重置(reset())array 指针。
//如果 array 是空(如果不是一个数组),将会返回 NULL
return array_pop($this->_stack);
}
// 推送元素到栈顶
public function push($value)
{
// 满栈
if (count($this->_stack) == $this->_size) {
return false;
}
//array_push() 将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。
//Note: 如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
//返回处理之后数组的元素个数
array_push($this->_stack, $value);
return true;
}
public function isEmpty()
{
// 是否是空栈
//这个写法很优雅
return current($this->_stack) == false;
}
public function size()
{
return count($this->_size);
}
}
$stack = new SimpleStack(15);
var_dump($stack->isEmpty()); # true
$stack->push(111);
$stack->push('学院君');
var_dump($stack->pop()); # 学院君
var_dump($stack->size()); # 1