我正在尝试获取会话变量并将其分解为数组,以便创建单独的会话变量。
我要做的是有一个文本框来查找长度的英尺和英寸。例15.2将是15英尺和2英寸
<cfif isDefined("session")
and structKeyExists(session, 'checkout')
and structKeyExists(session.checkout, 'vehicle')
and structKeyExists(session.checkout.vehicle, 'ft') >
<cfset Feet = "#session.checkout.vehicle.ft#" />
<cfset FeetArray = listtoarray(Feet, ".") />
<cfdump var="#FeetArray#">
</cfif>
然后我可以使用#FeetArray [1]#&amp; #FeetArray [2]#脚和英寸。
我挣扎的地方有时会输入英寸,所以有时不需要FeetArray [2]。
我尝试使用:
<cfif isDefined("#FeetArray[2]#")>
<cfif isDefined("FeetArray[2]")>
他们都没有工作我只是想知道是否有人可以指导我正确的方向!
答案 0 :(得分:3)
您可以检查数组的长度,并根据您可以进行编码。
<cfif isDefined("session") and structKeyExists(session, 'checkout') and structKeyExists(session.checkout, 'vehicle') and structKeyExists(session.checkout.vehicle, 'ft') >
<cfset Feet = "#session.checkout.vehicle.ft#" />
<cfset FeetArray = listToArray(Feet, ".") />
<cfif arrayLen(FeetArray) EQ 1>
code when there is feet available
<cfelse>
code when there are both feet and inches available
</cfif>
</cfif>
答案 1 :(得分:3)
要检查数组中是否存在元素,请使用(命名不佳的)arrayIsDefined()
函数:
<cfif arrayIsDefined(FeetArray, 2)>
请注意:您真的不应该像这样使用基于标记的语法来处理业务逻辑代码。保留您的视图标记,以及它们所属的视图。