<html>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf-8'>
<title>使用数组来模拟栈的操作</title>
</head>
<body>
<p>php的数组中提供的入栈array_push,array_pop,今天我们要自己实现,入栈出栈。</p>
<?php
class MyStack{
private $top=-1;//默认为-1,表示此栈为空
private $maxSize=5;//表示栈的最大容量
private $stack=array();
public function push($val){
//是否已满
if($this->top == $this->maxSize-1){
echo '<br> its over now';
return;
}//if
$this->top++;
$this->stack[$this->top]=$val;
}//push
//显示栈的所有的数据方法
public function showStack(){
if($this->top==-1){
echo '<br>its empty';
return;
}
for($i=$this->top;$i>-1;$i--){
echo '<br>stack['.$i.']='.$this->stack[$i];
}
}//showStack
//出栈,把栈顶的值取出
public function pop(){
if($this->top == -1){
echo '<br>its empty.';
return;
}else{
//把栈顶的值,取出
$topVal=$this->stack[$this->top];
$this->top--;
return $topVal;
}//if
}//pop
}//class
$mystack=new MyStack;
$mystack->push('123');
$mystack->push('abc');
$mystack->push('a2b3');
echo '<br>弹出前的样子:';
$mystack->showStack();
$val=$mystack->pop();
echo '<br>pop 的数据是:'.$val;
echo '<br>弹出后的样子是:';
$mystack->showStack();
?>
</body>
</html>