会议对象阵列内有阵列

问题描述:

我需要创建一个购物车有许多变量,如衬衫,CompanyText,Desiner_Names,公司,Cons_Name,DSNR_Cert_Number,DSNR_Cert_Issued_Date等 这里“Shirts,CompanyText,Desiner_Names”都是数组类型其中“衬衫”是主阵列的变量。会议对象阵列内有阵列

所以我需要基本上在阵列里面有2个不同的数组以及其他变量 两个阵列里面的数组。该代码是

<!--- create a MAIN array ---> 
<cfset Shirts= ArrayNew(1) /> 
<!--- "Cons_Code" is the key value taken from "Cons_name" and "Company_Text_Code" 
    Also every time a user selects a new "Shirt", a new key "Cons_Code" is created ---> 
<cfset Cons_Code = 2 > 
<!--- create a structure ---> 
<cfset stShirts[Cons_Code] = StructNew() /> 
<!--- assign values to our structure ---> 
<cfset stShirts[Cons_Code].Company_Text_Code = "" /><!--- 
<cfset stShirts[Cons_Code].CompanyText = "333" />---> 
<cfset stShirts[Cons_Code].Desiner_Names = ArrayNew(1) /> 
<cfset stShirts[Cons_Code].Desiner_Names[1] = "PARIS" /> 
<cfset stShirts[Cons_Code].Desiner_Names[2] = "LONDON" /> 
<cfset stShirts[Cons_Code].Desiner_Names[3] = "MILAN" /> 
<cfset stShirts[Cons_Code].CompanyText = ArrayNew(1) /> 
<cfset stShirts[Cons_Code].CompanyText[1] = "perryellis" /> 
<cfset stShirts[Cons_Code].CompanyText[2] = "arrow" /> 
<cfset stShirts[Cons_Code].CompanyText[3] = "polo" /> 
<cfset stShirts[Cons_Code].Cons_Name = "" /> 
<cfset stShirts[Cons_Code].DSNR_Cert_Number = "" /> 
<cfset stShirts[Cons_Code].DSNR_Cert_Issued_Date = "" /> 
<cfset ArrayAppend(Shirts, StructCopy(stShirts[Cons_Code])) /> 
<!--- store structure in our array ---> 

<cfoutput> 
    <cfloop from="1" to="#ArrayLen(Shirts)#" index="row"> 
    Row #row#: 
     #Shirts[row].CompanyText[1]#, 
     #Shirts[row].Desiner_Names[2]#,  
     #Shirts[row].Cons_Name#<br /> 
     #Shirts[row].DSNR_Cert_Issued_Date#<br /> 
    </cfloop> 
</cfoutput> 

有时候我由具有一个个阿雷/衬衫里面2个阵列收到错误

"You have attempted to dereference a scalar variable " 

而且我是做正确的事情? 这个“Shirts”包含至少150个其他不同的可变参数,进入会话。 帮助pleez。 xain胡

+2

哪一行抛出错误 – jarofclay 2010-07-28 19:53:08

+0

Xian 2010-07-28 20:45:48

+2

这是代码的一部分功能还是CFC方法?可能是因为您没有正确使用范围和密钥/数据冲突。 – Sergii 2010-07-28 21:41:05

注释掉

<cfset stShirts[Cons_Code].CompanyText = "333" /> 

我怀疑你仍然有你的代码某处这样的事情,虽然。基本上,你的错误告诉你,你正在使用数组或结构符号尝试访问一个变量,但该变量不是一个结构或数组。

+0

仍然是一样的错误 – Xian 2010-07-28 20:46:03

+1

“仍然是同样的错误”在什么后? Sergii是对的 - 您需要提供更多信息才能帮助您。目前,我们对实际发生的事情一无所知。 – 2010-07-29 13:02:55

您可能会遇到用cfdump拍摄购物车的麻烦。 分解每个阶段,这将使购物车,并测试它是否做它应该做的。一旦它完成了它需要做的事情,那么你可以把它放在一起。

当这条线后运行cfdump,

<!--- store structure in our array ---> 
<cfdump var="#stshirts#"> 

你会注意到,在数组中的第一个指标是不确定的,而第二个将有你的结构与子数据一起。

难道你不希望数组动态填充自己,以便你没有任何空索引?您也不需要担心生成自己的唯一索引,只需将结构中的数据提供给您,然后将其附加到数组中即可。

<cfoutput> 
#ArrayAppend(ArrayName, "#StrucureName#")# 
</cfoutput> 

通过以上,你就可以结构添加到您的阵列,只要执行该代码前阵已经被定义。数组中的索引将相应地动态添加或删除,留下顺序索引,没有任何间隙。

如果你想从你的结构得到任何东西,

<cfloop index="i" from="1" to="#ArrayLen(ArrayName)#"> 
<cfoutput> 
    #ArrayName[i].NameOfKeyInStructure# 
</cfoutput> 
</cfloop>