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

各反復ではなく、 loop の前に一度だけ実行してください。

于 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

削除する

 
  $this->all = array();
 

ループの中。反復ごとにアレイを再初期化します。

お役に立てれば。

于 2012-11-21T08:34:24.893 に答える
0

ループ内で配列を初期化していforeachます。つまり、最初のループで空の配列を作成してから要素を追加しています。2 番目のループでは、配列を再度作成し (最初の要素を削除して)、要素を追加します。したがって、各ループの終わりに、配列には 1 つの要素だけが含まれます。初期化をループの外に移動します。

$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 に答える