CFIF对于数组变量并不总是存在

时间:2015-04-10 12:15:36

标签: coldfusion

我正在尝试获取会话变量并将其分解为数组,以便创建单独的会话变量。

我要做的是有一个文本框来查找长度的英尺和英寸。例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]")>

他们都没有工作我只是想知道是否有人可以指导我正确的方向!

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)>

请注意:您真的不应该像这样使用基于标记的语法来处理业务逻辑代码。保留您的视图标记,以及它们所属的视图。