访问结构“键”时处理WhiteSpaces

时间:2014-01-31 18:42:17

标签: coldfusion

请考虑以下图片:enter image description here

那么,我如何正确访问结构中的“Android Phone”键。当我执行以下操作时(摘自我的代码):

<cfloop from="1" to="#arraylen#" index="i">


        <cfif structKeyExists(cfData[i], "open")>
        <cfoutput>#cfData[i].open.AOL#</cfoutput>

      <cfelse>
         NULL
      </cfif>

    </cfloop>

但是,当我尝试<cfoutput>时,它可以正常工作:

<cfoutput>#cfData[i].open.Android Phone#</cfoutput>

OR

<cfoutput>#cfData[i].open.AndroidPhone#</cfoutput>

我收到以下错误:

元素OPEN.ANDROIDPHONE在作为表达式一部分引用的CFML结构中未定义。

错误发生在C:myfile.cfm:第185行

183 :         <!--- <cfloop list="#KeyList#" index="colItem"> --->    
184 :         <cfif structKeyExists(cfData[i], "open")>
185 :         <cfoutput>#cfData[i].open.AndroidPhone#</cfoutput>
186 :         
187 :       <cfelse>

问题2:我遇到了一个更奇怪的现象:

当我输出以下值时:

<cfoutput>#cfData[i]["open"]["Android Phone"]#</cfoutput>

 <cfoutput>#cfData[i]["open"]["Android Tablet"]#</cfoutput>

完美无缺。

但是,当我将其更改为以下内容时:

<cfoutput>#cfData[i]["open"]["Lotus Notes"]#</cfoutput>

我收到以下错误:

元素Lotus Notes在作为表达式的一部分引用的CFML结构中未定义。

The error occurred in C:myfile.cfm: line 185

183 :             
184 :         <cfif structKeyExists(cfData[i], "open")>
185 :         <cfoutput>#cfData[i]["open"]["Lotus Notes"]#</cfoutput>
186 :         
187 :       <cfelse>

它是否只适用于一系列与空间相关的键而不适用于单字键后出现的键?请指教。

1 个答案:

答案 0 :(得分:5)

在这种情况下,由于空间不能使用点表示法,因此必须使用括号引号表示法:

<cfoutput>#cfData[i]["open"]["Android Phone"]#</cfoutput>