2012-11-21 3 views
0

array_sum이 제대로 작동하지 않는 것 같습니다. 아마도 누군가 나를 도울 수 있습니다. 내가 배열의 모든 값을 요약하고자하는 foreach 루프 후 PHP - 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; 

하지만 요약하지 않는, 그냥 나에게 배열의 마지막 값을 제공합니다. 첫 번째 PHP 클래스를 작성하려고하는데이 배열에 좌절감을 느낍니다.

답변

0

당신은 첫 번째 루프에서 빈 arrray을 만들고 다음을 추가하는 것을 의미한다 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; 
+0

감사합니다, 나는 믿을 수 없다. 나는 쉬운 일을 놓쳤다. 당신의 도움에 감사한다. – Myt

3

당신은 각 반복에 배열을 비우는됩니다

$this->all = array(); 

그냥 않는 한 번하지 각각의 반복에서 루프 전에.

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; 
0

루프에

 

    $this->all = array(); 
 

를 제거합니다. 각 반복마다 배열을 다시 초기화합니다.

희망이 도움이됩니다.

관련 문제