好的,我一直在努力解决这个问题,我想我会回到基础并尝试弄清楚我的错误,因为我在这里得到了同样的错误。
这是我的代码:
<cfparam name="session.cart" default="arrayNew(1)">
<cfset session.cart = arrayAppend(session.cart,structNew() )>
<cfset thisCartItem = arraylen(session.cart)>
<cfset session.cart[thisCartItem].itemID = "X">
<cfset session.cart[thisCartItem].quantity = "X">
<cfset session.cart[thisCartItem].itemName = "X">
<cfdump var="#session.cart#">
这是我的错误:
类java.lang.Boolean类型的对象不能用作数组
答案 0 :(得分:4)
错误意味着它的内容。变量session.cart
不是数组。它是一个布尔值。如果您阅读ArrayAppend documentation,它就会解释原因。该函数修改了数组并返回一个布尔值:
成功完成后,返回为真。
通过在此处捕获结果,您实际上将购物车价值设置为true/false
:
<!--- Note the addition of the pound signs in the CFPARAM --->
<cfparam name="session.cart" default="#arrayNew(1)#">
<cfset session.cart = arrayAppend(session.cart, structNew())>
话虽如此,您可以使用所有最新版本的CF支持的简写语法,即{}
- 新结构和[]
- 新数组,大大简化代码。要创建新数组:
<cfset session.cart = []>
将一个或多个结构附加到该数组的末尾:
<!--- append first structure to array --->
<cfset ArrayAppend( session.cart
, { itemID = "X", quantity = "X", itemName = "X" }
)>
<!--- append second structure to array --->
<cfset ArrayAppend( session.cart
, { itemID = "Y", quantity = "Y", itemName = "Y" }
)>