$items
函数内部和函数$items
外部在两个不同的范围内,它们是完全不同的变量。每次调用时,函数内部$items
都会重置为空,并且也不影响$items
函数外部。本质上,您的函数什么都不做。真正正确的是,您应该使用一个类来执行此操作:
class Result {
protected $items = array();
public function add($num) {
$this->items[] = $num;
}
public function getResult() {
return array_sum($this->items);
}
}
$r = new Result;
$r->add(1);
...
echo $r->getResult();
您还可以使用static
变量使函数内的值累积:
function result_time($Num){
static $items = array();
$items[] = $Num;
return $items;
}
result_time(1);
...
$result = result_time(3);
echo array_sum($result);
不过,这并不是一个好主意。您也可以使用global
关键字共享变量的范围,但这是一个坏主意,我不会宣传它。了解变量范围并正确构建代码。