<?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) возвращает false?
Я не вижу, как это может быть правдой. http://php.net/manual/en/function.empty.php говорит, что пустой возвращает bool, а не int. – Patashu
@Patashu Я не думаю, что он на самом деле допрашивает функцию php, но функция, которую он использует вместе с пустым() renrenshang Я думаю, что это причина, по которой остальная часть функции работает после попытки сделать остальную часть кода внутри else statment – Breezer
Попробуйте 'var_dump ($ это -> _ данные) '. – Raptor