Coldfusion 列表中的检查值都相同

Coldfusion 列表中的检查值都相同,coldfusion,Coldfusion,好的,这里有一件事,我有一个表单,提交时只能更新一个表,当一个特定的复选框表单变量值是相同的,如果一个是不同的,那么它应该继续更新表。因此,用户基本上是选择不同的行并点击submit按钮 例如,一个好的提交应该是 form.claimid = 12,12,12,12,12 form.claimid = 1,5,77,33,4, 一个不好的服从将是错误的 form.claimid = 12,12,12,12,12 form.claimid = 1,5,77,33,4, 如果form.c

好的,这里有一件事,我有一个表单,提交时只能更新一个表,当一个特定的复选框表单变量值是相同的,如果一个是不同的,那么它应该继续更新表。因此,用户基本上是选择不同的行并点击submit按钮

例如,一个好的提交应该是

form.claimid = 12,12,12,12,12
 form.claimid = 1,5,77,33,4,
一个不好的服从将是错误的

form.claimid = 12,12,12,12,12
 form.claimid = 1,5,77,33,4,
如果form.claimid列表中的所有值都相同,我不知道如何签入列表


如果您对此有任何想法,我将不胜感激。

如果版本足够,您也可以使用CF的本机ListRemovedUpplicates()(CF10,Railo/Lucee 4)



我将把它作为旧CFs的替代方法

如果form.claimid列表中的所有值都相同,我不知道如何签入列表

有两种方法,大多数都涉及循环,但我将向您展示一个正则表达式,它可以实现这一点。我们将使用ListFirst获取第一个值,并对该值进行重新替换,以查看其他值是否匹配

我在这里使用一个循环,但只是作为演示

<cfoutput>
<cfset mylist = "11,22,33,44|44,44,33,44|557,557,557">
<cfloop list="#mylist#" index="m" delimiters="|">
  <cfset matchele = listfirst(m)>
  <cfset eradicate = rereplace(m,"(?:(?:^|,)#matchele#(?=,|$))+","","ALL")>
  "#m#", "#matchele#", "#eradicate#"<br />
</cfloop>
</cfoutput>

“#m#”、“#matchele#”、“#根除#”

如果您卡在CF 9或更低版本上,您可以在列表上循环并将元素放入
结构中

<cfset list_coll = structNew() />
<cfloop list="#mylist#" index="myitem">
    <cfset list_coll[myitem] = "dummy" />
</cfloop>
<cfif structCount(list_coll) EQ 1>
    <!--- This is good --->
<cfelse>
    <!--- This is bad --->
</cfif>


这样做的原因是
struct
s不能有重复的键。

事实上,我对此考虑得更多了。我可以在列表中循环,并对每个值使用compare函数。这将使您能够将实际列表与不同的列表进行比较。@Dan,完全忘记了,但CF 10有一个本机ListRemovedDuplicates可用于此目的。下次,最好先检查文档。只要看看函数名,就会想到至少三种可能性;-)非常感谢您的回答,我尝试了您的代码并添加了一些位,这样我就可以看到发生了什么。我对正在发生的事情有点困惑,第一组数字似乎很好,第二组数字让我有点不知所措,因为它显示了消除33和44,我本以为它会留下44。最后一个显示要根除557,尽管所有的数字都是相同的,但这真的让我很吃惊,除非我遗漏了一些东西。@jeeperscropers它在cflive.net上工作。我更新了输出行,以反映当前的子列表,并引用每个值,以便在这样简单的输出中更加清晰。例如,557行现在应该是
“557557557”、“557”和“
如果我想检查非重复值,ListRemovedUpplicates()将如何工作?正如我在回答的开头所演示的:
意味着列表中只有一个唯一的值。