在并行列表中查找匹配项

zzx*_*anw 0 coldfusion

<cfset stateList = "Alabama,Alaska,Arizona, ..., Wyoming">
<cfset stateAbbrList = "AL,AK,AR, ..., WY">

<cfset stateAbbr = #ListGetAt("stateAbbrList",ListFind("stateList",form.state))#>
Run Code Online (Sandbox Code Playgroud)

当form.state是Alabama时,我希望stateAbbrList是AL.但相反,我得到一个错误,说ListGetAt返回零.

我究竟做错了什么?

Dav*_*ber 5

你需要从变量名称周围取引号; 如果你使用引号,那么你需要包装#符号.

<cfset stateAbbr = ListGetAt(stateAbbrList, ListFind(stateList, form.state)) />
Run Code Online (Sandbox Code Playgroud)

要么

<cfset stateAbbr = ListGetAt("#stateAbbrList#", ListFind("#stateList#", form.state)) />
Run Code Online (Sandbox Code Playgroud)

我要补充一点,我认为这不是一个好方法.更好的方法是使用struct或创建查询.

<cfset stateStruct = { "AL" = "Alamaba", ..., "WY" = "Wyoming" } />
Run Code Online (Sandbox Code Playgroud)