通过动态评估迭代url请求集合变量

时间:2013-06-04 14:35:03

标签: coldfusion cfml coldbox

我正在尝试todo在coldfusion cfscript中迭代通过变量的请求集合并做一些评估,我可以在PHP中轻松完成,但我遇到问题转换为coldfusion cfscript,因为它似乎我无法构建动态如果声明

PHP

for ( $i=0 ; $i<count($aColumns) ; $i++ )
    {
        if ( $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' )
        {
            //If there was no where clause
            if ( $sWhere == "" )
            {
                $sWhere = "WHERE ";
            }
            else
            {
                $sWhere .= " AND ";
            }

我试过这个,出错了

for (i=1; i<= iColumnsLen; i++) {   
  if (rc.bSearchable_&i EQ true and rc.sSearch&i NEQ '') {
            if ( sWhere EQ "" )
            { sWhere = " WHERE "; }
            else
            { sWhere &= " AND ";}
  }         
}

还尝试将if语句行更改为相同的

if (rc.bSearchable_+i EQ true and rc.sSearch+i NEQ '') {

最后我尝试构建一个字符串并使用它,我知道它不会工作,但我想我给它一个镜头,错误是无法将var转换为布尔

for (i=1; i<= iColumnsLen; i++) {
 var iterator = "rc.bSearchable_"&i&" EQ true and rc.sSearch_"&i&" NEQ ''";
  if (#iterator#) {

这里是没有迭代的静态coldfusion,我希望有问题地完成

  if (rc.bSearchable_1 EQ true and rc.sSearch_1 NEQ '') {
            if ( sWhere EQ "" )
            { sWhere = " WHERE "; }
            else
            { sWhere &= " AND ";}
  }         
  if (rc.bSearchable_2 EQ true and rc.sSearch_2 NEQ '') {
            if ( sWhere EQ "" )
            { sWhere = " WHERE "; }
            else
            { sWhere &= " AND ";}
  } 
  if (rc.bSearchable_3 EQ true and rc.sSearch_3 NEQ '') {
            if ( sWhere EQ "" )
            { sWhere = " WHERE "; }
            else
            { sWhere &= " AND ";}                                     
  }

任何帮助都是非常有必要的

1 个答案:

答案 0 :(得分:3)

正如Leigh所说,你只需要像这样引用动态列:

rc["bSearchable_" & i] 
rc["sSearch_" & i]