0

我似乎无法让 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

4 回答 4

3

您在每次迭代中清空数组:

$this->all = array();

只需在循环之前执行一次,而不是每次迭代。

于 2012-11-21T08:31:20.730 回答
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;
于 2012-11-21T08:31:42.140 回答
0

您正在循环内初始化数组foreach,这意味着您正在第一个循环中创建一个空数组,然后添加一个元素。在第二个循环中,您将再次创建数组(从而消除第一个元素)并添加一个元素。因此,在每个循环结束时,您的数组只包含一个元素。将初始化移出循环:

$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;
于 2012-11-21T08:32:37.887 回答
0

消除

 
  $this->all = array();
 

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

希望这可以帮助。

于 2012-11-21T08:34:24.893 回答