我有一段代码,我试图用其他价格替换一些价格表。
FORM.GETSELECTION -2,-1,30.0000
FORM.GETSELECTIONTEXT 0,850,0
FORM.GET_ITEMS YES~25.17,YES~250.0,YES~150.0
我正在尝试的是:-2
在逗号之前的form.get_items
符号之后会有~
的值,因为它位于1
位置。
如果值为-1
,我将从form.getselectiontext
获得850
的值。
第3项的价值来自getselection
,因为它没有-1
或-2
我尝试使用循环,但对于我应该尝试什么感到困惑
<cfset manageprices = form.getselection>
<cfset indx = 0>
<cfloop list="#manageprices#" index="op">
<cfset indx = indx + 1>
<cfoutput>#op#</cfoutput>
</cfloop>
答案 0 :(得分:0)
所以我认为你所追求的输出是25.17,850,30.0000
。如果是这样,那么你可以这样做:
<cfscript>
FORM.GETSELECTION = "-2,-1,30.0000";
FORM.GETSELECTIONTEXT = "0,850,0";
FORM.GET_ITEMS = "YES~25.17,YES~250.0,YES~150.0";
result = [];
listEach(form.getselection, function(value, index) {
switch (value) {
case "-2":
result.append(listLast(listGetAt(form.get_items, index), "~"));
break;
case "-1":
result.append(listGetAt(form.getselectiontext, index));
break;
default:
result.append(value);
}
});
writeDump(result);
writeDump(arrayToList(result));
</cfscript>
示例:http://trycf.com/gist/d9e4d20f07b76e0b2cbc8d140a097e29/acf11?theme=monokai
我不确定您使用的是哪个版本的ColdFusion - 上述代码适用于ColdFusion 11或更高版本。如果您使用的是旧版本,那么您可以自行执行简单的循环并跟踪当前索引,而不是使用listEach
,例如:
<cfscript>
FORM.GETSELECTION = "-2,-1,30.0000";
FORM.GETSELECTIONTEXT = "0,850,0";
FORM.GET_ITEMS = "YES~25.17,YES~250.0,YES~150.0";
result = [];
index = 0;
for(value in form.getselection) {
index++;
switch (value) {
case "-2":
arrayAppend(result, listLast(listGetAt(form.get_items, index), "~"));
break;
case "-1":
arrayAppend(result, listGetAt(form.getselectiontext, index));
break;
default:
arrayAppend(result, value);
}
};
writeDump(result);
writeDump(arrayToList(result));
</cfscript>
示例:http://trycf.com/gist/38e8f85539886faf3ec9202688ca9c9f/acf?theme=monokai