为什么不为空(0)返回false?

时间:2013-04-23 03:02:39

标签: php

<?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_dataempty($this->_data)应返回false,但测试结果为int(0)。我很困惑。

1 个答案:

答案 0 :(得分:0)

$ this-&gt;代码中的_data是一个数组。

用此替换你的行(以评估传递的零值):

$this->_data[$this->_end];