我需要将两个单独列表的输出连接在一起以在CFMAIL中输出,我想知道最好的方法是什么。
我有两个表单字段:first_name和last_name
每个字段最多包含5个名称。我需要遍历这些名称并加入名字和姓氏,然后将它们输出到无序列表。我无法直观地看到实现这一目标的正确方法。
有人可以在CFML中建议一个方法(我不太了解CFSCRIPT)。
谢谢!
编辑:我应该补充一点,这两个字段总是具有完全相同的条目数。感谢所有回答 - 证明有很多方法可以给猫皮肤涂抹:)
答案 0 :(得分:4)
我会做像
这样的事情<cfloop from="1" to="#ListLen(firstnames)#" index="i">
#ListGetAt(firstnames,i)# #ListGetAt(lastnames,i)#<br>
</cfloop>
如果这是一个5000的列表,你最好把它放在一个结构或一个数组中,但是对于一个~5的列表,这应该就足够了。
答案 1 :(得分:1)
我认为这是实现这一目标的最简单方法。
<!--- Create a names container --->
<cfset names = "<ul>">
<!--- Fill some dummy containers --->
<cfset first = "thomas,henry,philip,john,rony">
<cfset last = "smith,baker,crowe,ryan,jones">
<!--- Loop through the lists and append them to the container string --->
<cfloop index="name" to="#listLen(first)#" from="1">
<cfset names &= "<li>" & ListGetAt(first,name) & " " & ListGetAt(last,name) & "</li>">
</cfloop>
<cfset names &= "</ul>">
<cfoutput>#names#</cfoutput>
答案 2 :(得分:1)
我会添加一个检查以确保每个索引都存在您的列表值,否则您将收到错误。我还会添加一个检查来循环遍历更大的列表,以便您获得所有值,以防有人在两者中都没有输入5:
<Cfset firstnames="Matt,Ian,Brandon,Sam,Tom">
<cfset lastnames="Jones,Smith,Weiss">
<!--- SEE WHICH LIST IS LONGER AND SET THAT AS THE ONE THAT WE WILL USE FOR THE LOOP --->
<cfif ListLen(firstnames) gte ListLen(lastnames)>
<cfset primary=firstnames>
<cfelse>
<cfset primary=lastnames>
</cfif>
<cfset myOutput="<ul>">
<cfloop from="1" to="#ListLen(primary)#" index="i">
<Cfset myOutput &= "<li>">
<cfif ListLen(firstnames) gte i>
<cfset myOutput &= ListGetAt(firstnames,i)>
</cfif>
<cfif ListLen(lastnames) gte i>
<cfset myOutput &= " " & ListGetAt(lastnames,i)>
</cfif>
<Cfset myOutput &= "</li>">
</cfloop>
<Cfset myOutput &= "</ul>">
<cfoutput>#myOutput#</cfoutput>
答案 3 :(得分:1)
您可以在CFLOOP中使用“list”属性,但这意味着在输出中组合列表函数。下面是一个如何完成它的例子,它假设两个列表总是具有相同的长度。如果这些名称被用户键入,那么我可能会害怕他们是否输入了一个逗号,因为这样可以通过任何类型的循环来解决问题。
<cfset lstFirstNames = "John,Bob,Tom,Jeff" />
<cfset lstLastNames = "Smith,Doe,Rodriguez,Horan" />
<cfloop list="#Variables.lstFirstNames#" index="FirstName" />
#FirstName# #ListGetAt(Variables.LastNames, ListFind(Variables.lstFirstNames, FirstName))#<br />
</cfloop>
答案 4 :(得分:0)
尝试:
<cfset lstFirstNames = "John,Bob,Tom,Jeff" />
<cfset lstLastNames = "Smith,Doe,Rodriguez,Horan" />
<cfloop list="#Variables.lstFirstNames#" index="FirstName">
<cfoutput>#FirstName# #ListGetAt(Variables.lstLastNames, ListFind(Variables.lstFirstNames, FirstName))#</cfoutput><br />
</cfloop>