<?php
class Stack{
private $_data = array();
private $_end = null;
public function push($data){
if($this->_end === null){
$this->_end = 0;
}else{
$this->_end = $this->_end + 1;
}
$this->_data[$this->_end] = $data;
}
public function pop(){
if(empty($this->_data)){
return false;
}
$ret = $this->_data[$this->_end];
array_splice($this->_data, $this->_end);
$this->_end--;
return $ret;
}
public function getData(){
return $this->_data;
}
}
// test
$stack = new Stack();
$stack->push(0);
$pop_data = $stack->pop();
var_dump($pop_data, $stack->getData());
为什么empty(0)
没有返回false
?我将0
推送到pop_data
。 empty($this->_data)
应返回false
,但测试结果为int(0)
。我很困惑。
答案 0 :(得分:0)
$ this-&gt;代码中的_data是一个数组。
用此替换你的行(以评估传递的零值):
$this->_data[$this->_end];