我似乎无法让array_sum正常工作,也许有人可以帮助我。
foreach ($this->vacation as $v) {
$this->all = array();
$this->all[] = ((strtotime("$this->end 23:59:59") - strtotime("$this->beginning")) / 86400) - $this->sum_of_days;
}
$this->all = is_array($this->all) ? array_sum($this->all) : 0;
在foreach循环之后我想对数组中的所有值求和,但它不求和,它只是给出了数组的最后一个值。我正在尝试编写我的第一个PHP类,我对此数组感到沮丧。
答案 0 :(得分:3)
您在每次迭代时使用以下内容清空数组:
$this->all = array();
只需在循环之前执行一次,而不是每次迭代。
答案 1 :(得分:1)
你是在循环中重新初始化数组:
$this->all = array(); // Moved out of the loop
foreach ($this->vacation as $v) {
$this->all[] = ((strtotime("$this->end 23:59:59") - strtotime("$this->beginning")) / 86400) - $this->sum_of_days;
}
$this->all = is_array($this->all) ? array_sum($this->all) : 0;
答案 2 :(得分:0)
您正在foreach
循环内初始化数组,这意味着您在第一个循环中创建一个空arrray,然后添加一个元素。在第二个循环中,您将再次创建数组(从而消除第一个元素)并添加一个元素。因此,在每个循环结束时,您的数组只包含一个元素。将初始化移到循环外:
$this->all = array();
foreach ($this->vacation as $v) {
$this->all[] = ((strtotime("$this->end 23:59:59") - strtotime("$this->beginning")) / 86400) - $this->sum_of_days;
}
$this->all = is_array($this->all) ? array_sum($this->all) : 0;
答案 3 :(得分:0)
删除
$this->all = array();
在循环中。它在每次迭代时重新初始化数组。
希望这会有所帮助。