根据数组中的条件替换元素

时间:2014-12-15 09:55:27

标签: coldfusion

我正在运行代码,我在数组中获取值:

URLValue[1]

这包含以下代码:

a=c&mode=yes&action=right&sortorder=2

现在我想做出改变。如果是sortorder=2,那么当条件发生变化时,它应该将该值更改为sortorder=1,反之亦然,但我找不到任何方法来执行此操作。

我检查了arrayFind但是如何使用if条件将该排序顺序替换为我正在运行的内容?

比如检查sortorder=1是否为2,如果为2,则将其设为1,这样我就可以正确地进行排序。

至于为什么我这样做,有一个条件,因为这不能通过jQuery完成。

以下是更新#1

显然,URLValue[1]是通过URL查询字符串形成的。所以我在想为什么不做这样的替换:

<cfif cgi.QUERY_STRING contains 'sortOrder=2'>
    <cfset URLreplace = 'sortOrder=1'>
<cfelse>
    <cfset URLreplace = 'sortOrder=2'>
</cfif> 

我在想replacereplacelist之类的内容,但是我如何在URL中执行URLReplace然后将该值转换为数组?

2 个答案:

答案 0 :(得分:0)

如果您只想在这个特定情况下切换排序顺序值,那么我只会切入追逐。如果你发现A用B替换它,反之亦然。

<cfif findNoCase("sortOrder=1",urlValue[1])>
    <cfset urlValue[1] = ReplaceNoCase(urlValue[1],"sortorder=1","sortorder=2")/>
<cfelseif  findNoCase("sortOrder=2",urlValue[1])>
    <cfset urlValue[1] = ReplaceNoCase(urlValue[1],"sortorder=2","sortorder=1")/>
</cfif>

如果你所追求的只是切换它。上面的代码总是将1替换为2,它存在于URL中。当然,您可能希望根据查询字符串最终的位置向if语句添加其他检查。

答案 1 :(得分:0)

  

URLValue[1]是通过URL查询字符串形成的   ...   <cfif cgi.QUERY_STRING contains 'sortOrder=2'>

丹提出了一个很好的观点。你可能会使事情变得复杂。不需要解析CGI.QUERY_STRING来提取参数。 当前页面的参数已经过解析,并在system scope URL中可用。

要修改URL参数,只需通过URL范围通过名称访问它。 (如果参数是可选的,请使用structKeyExists验证它是否存在。

<cfset URL.sortOrder = URL.sortOrder eq 1 ? 2 : 1>

然后,如果您确实需要将参数转换为数组,只需遍历URL范围/结构中的键:

 <cfloop collection="#URL#" item="key">
     <!--- demo - show parameters --->
     <cfoutput>
        Key name = #key# Value = #URL[key]#<br>
     </cfoutput>
     ... do something with the paramters here ...
 </cfloop>