<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>