希望有人可以让我知道我做错了什么。

我正在遍历一个数组并输出值。但是,如果字段为空,则会显示Element <VARIABLE> is undefined in <INDEX>

例如。

<cfloop array="#allocationDetails.offerings#" index="myIndex">
#myIndex.name#
#myIndex.number#
#myIndex.somefield#
</cfloop>


在一个字段没有值之前,它可以正常工作。例如myIndex.somefield为空,然后出现错误:


“元素某字段在myIndex中未定义”


如果我将字段输出包装在isDefined(“ myIndex.somefield”)或structKeyExists(myIndex,“ somefield”)等检查中,它们将返回true,但是当我尝试输出时会收到错误消息“ Element somefield in myIndex undefined”字段值。

我还在myIndex.somefield上尝试了cfdump并得到了相同的错误。

我本以为这是一件很基本的事情,但是我看不到为什么会出错。我是否真的缺少明显的东西?

谢谢你的帮助。

干杯
标记

最佳答案

也许该索引没有数组元素?例如:

<cfscript>
    myArr = ArrayNew(1);
    myArr[1] = 'xx';
    myArr[2] = 'yy';
    myArr[4] = 'zz';
</cfscript>


如果尝试遍历它,则可以添加ArrayIsDefined检查:

<cfloop array="#myArr#" index="myIndex">
    <cfif ArrayIsDefined(myArr, myIndex)>
        #myIndex#
    </cfif>
</cfloop>


如果没有,那么总可以尝试catch:

<cfloop array="#myArr#" index="myIndex">
    <cftry>
        #myIndex#
        <cfcatch type="any">
            Error or default variable setting here
        </cfcatch>
    </cftry>
</cfloop>

10-07 22:20