希望有人可以让我知道我做错了什么。
我正在遍历一个数组并输出值。但是,如果字段为空,则会显示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>