列表中的检查值全部相同

时间:2015-02-09 15:28:57

标签: coldfusion

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

例如,好的提交将是

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

提交错误

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

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

我很感激任何想法。

2 个答案:

答案 0 :(得分:1)

如果版本足够,你也可以使用CF的原生ListRemoveDuplicates()(CF10,Railo / Lucee 4)

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

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

我会将此作为旧CF的替代方法。

  

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

有几种方法,其中大多数涉及循环,但我将向您展示一个可以做到这一点的正则表达式。我们将使用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>

答案 1 :(得分:0)

如果你卡在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>

这可行的原因是struct不能有重复的密钥。