检查列表中的值是否全部相同

Check values in a list are all identical

好的,我有一个表单,提交后只能更新 table 当特定的复选框表单变量值相同时,如果一个不同,那么它应该继续更新 table.所以基本上用户选择不同的行并点击提交按钮。

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

form.claimid = 12,12,12,12,12

糟糕的提交是

 form.claimid = 1,5,77,33,4,

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

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

版本够的话也可以使用CF自带的ListRemoveDuplicates()(CF10,Railo/Lucee4)

https://wikidocs.adobe.com/wiki/display/coldfusionen/ListRemoveDuplicates

<cfif ListLen(ListRemoveDuplicates(mylist)) eq 1>

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

I'm not sure how to check in a list if all the values in the form.claimid list are identical or not?

有几种方法,其中大部分涉及循环,但我将向您展示一个可以执行此操作的正则表达式。我们将使用 ListFirst 获取第一个值,并对该值使用 ReReplace 以查看是否所有其他值都匹配。

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

<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>

如果您卡在 CF 9 或更低版本,您可以遍历列表并将元素放入 struct:

<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>

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