3

我正在使用创建一个新数组,cfloop并且出于某种原因,ColdFusion 将单词“YES”注入到页面 HTML 中,用于MyNewArray. 因此,通过下面的代码,我得到了“YES YES YES YES YES”。我怎么能阻止它?

<cfset MyNewArray = ArrayNew(1)>
<cfset MyNewArray2 = ArrayNew(1)>

<cfset MyNewArray[1] = "Sunday">
<cfset MyNewArray[2] = "Monday">
<cfset MyNewArray[3] = "Tuesday">
<cfset MyNewArray[4] = "Wednesday">
<cfset MyNewArray[5] = "Thursday">
<cfset MyNewArray[6] = "Friday">
<cfset MyNewArray[7] = "Saturday">

<cfloop from="2" to="6" index="i">
    <cfoutput>#ArrayAppend(MyNewArray2, MyNewArray[i])#</cfoutput>
</cfloop>
4

1 回答 1

16

根据文档,ArrayAppend 返回一个布尔值 - 即 true/yes - 您通过将表达式包装在#hashes#.

你不需要输出(或者实际上对结果做任何事情),你可以这样做:

<cfloop from="2" to="6" index="i">
    <cfset ArrayAppend(MyNewArray2, MyNewArray[i]) />
</cfloop>

作为旁注,与您的代码相同的更简单的方法是使用重复复制数组,然后使用 ArrayDeleteAt删除第一个值。

<cfset MyNewArray2 = duplicate(MyNewArray) />
<cfset ArrayDeleteAt(MyNewArray2,1) />
<cfset ArrayDeleteAt(MyNewArray2,6) />

或者,正如 Leigh 在评论中指出的那样,更简单的是将这三行转换为单个ArraySlice调用:

<cfset MyNewArray2 = ArraySlice(MyNewArray,2,5) />

还要考虑DayOfWeekAsString是否对您正在做的任何事情都是有用的功能。

于 2013-08-12T17:04:08.357 回答