PHP - array_sum有问题

时间:2012-11-21 08:29:11

标签: php arrays

我似乎无法让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类,我对此数组感到沮丧。

4 个答案:

答案 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();
 

在循环中。它在每次迭代时重新初始化数组。

希望这会有所帮助。