2012-01-02 25 views
0

これは非常に基本的なようですが、私はこの問題に取り組んでいます。ループ内でforeachループの値を追加する

$value = 0; 
foreach($this->products->result() as $this->product) 
{ 
    $value += $this->product->price; 
} 
//$value += $this->get_order_shipping_cost($orders_id); 

return $value; 

合計金額を作成するために追加されますし、その後、ループの外郵送料を追加するために、いくつかの理由で私のループは最初の値のみを返しているので、私はどこかで何かを上書きしていなっ値。

+0

'の$ this - >製品 - >結果()'これは何ですか?それは製品の配列ですか? – maxjackie

+0

あなたのループが予想された回数だけ実行されているかどうか確かめてください。時間?一度だけ実行することがあります! – Arfeen

答えて

3

私はこれはと思うところ上書きheapens:

foreach($this->products->result() as $this->product) 

私はあなたが前にやっているのか分からないけど、多分あなたはこのようなループのために一時変数名を使用することができます。

foreach($this->products->result() as $tempProduct) 
{ 
    $value += $tempProduct->price; 
} 

はそれが動作を期待;) 挨拶、ステファン

0

クラスのプライベートメンバーを設定するのは、プロダクトを取得するだけで、それだけです。あなただけの$productのように、代わりに自由変数を使用して、それが動作するはずです、$this->productを使用する必要はありません。

$value = 0; 
foreach($this->products->result() as $product) 
{ 
    $value += $product->price; 
} 

またproductsがあなたの目的の一つであるならば、あなたはおそらくちょうどgetTotalPrice()のような方法をそれを与える必要があります次のように合計を返します。

$value = $this->products->getTotalPrice(); 

これでコード内でより柔軟に対応できます。これが参考になることを願っています。

+0

"製品"に "p"がない問題を修正しました。 – Tudor