2011-12-05 27 views
2

私はカートのデータを配列に保持していますが、配列内には個々の製品情報を保持する構造体があります。構造体内のtotalprice列の合計を取得する必要があります。下のダンプを参照してください。配列内の構造体の合計

<cfset carTotal = ArraySum(session.mycart[ "totalPrice" ])>これは「値の総計は数値に変換できません」というエラーを生成しますか?これは構造体の中でarraysumを使用しているためですか?

ご協力いただきありがとうございます、ありがとうございます。

Shopping Cart Array

答えて

5

mycartは、Queryオブジェクトだった場合、それは構造体の配列なので、それは簡単なArraySum(mycart.totalPrice)

ことが、あなたはまだ比較的容易である、それをループに自分を持っていると思います:

<cfset sum = 0> 
<cfloop array="#session.mycart#" index="item"> 
    <cfset sum += item.totalPrice> 
</cfloop> 

<cfdump var="#sum#"> 

完全精度が必要な場合は、PrecisionEvaluate()を必ず使用してください。

+1

ありがとうHenry!私はまだこのフォーラムのスピードで驚いています!それは完璧に働いた - ありがとう! –

+0

@JasonCongerton plsがこれを正しい答えとしてマークします(チェックマークをクリックしてください)。 – Henry

+0

これはフォーラムではありませんのでご注意ください。 – ale

4

配列のように、自分自身をループして合計を記録しなければなりません。 ColdFusionの10またはRailo 4では

<cfset cartTotal = 0 /> 

<cfloop array=#session.mycart# index="i"> 
    <cfset cartTotal += i.totalPrice /> 
</cfloop> 

<cfdump var="#cartTotal#" /> 
+0

こんにちはバリー、あなたの応答のおかげで、ヘンリーはちょうどあなたの前にニップしましたが、あなたの努力に感謝!両方の返信が機能します! –

+0

@ Jason - Barryの反応も参考になった場合は、いつでもupvoteすることができます。 – Leigh

1

、あなたはUnderscore.cfcreduce functionを使用できます。

reduce単一の値に値のセットを「減らす」という一般的な高階関数です。この場合、コレクション内のすべてのアイテムの単価を「引き下げ」ます。

カスタム解決策ではなく、reduceのようなよく理解されている機能を使用すると、より読みやすいコードが得られます。

注:私はUnderscore.cfcを書きました