将值与键匹配

use*_*820 1 coldfusion

我有一个非常大的结构而不是密钥,遗憾的是我只有值可用.有没有办法通过传递其值来切换结构的键和值或搜索键?

(我正在使用其他人的代码而无法更改它.)

Pet*_*ton 5

当您只知道值时,使用函数StructFindValue查找结构键.

它返回一个匹配数组(但默认情况下限于一个匹配),每个数组元素包含一个带有三个键的结构:

  • 键 - 键的名称(你要追求的东西) ;
  • 路径 - 完整路径(用于嵌套结构);
  • 所有者 - 从中​​获取值的结构.

用法示例:

查找指向CGI范围中localhost IP地址的键(范围也是结构):

<cfset Result = StructFindValue( CGI , '127.0.0.1' ) />

<cfdump var=#Result[1].Key# />
Run Code Online (Sandbox Code Playgroud)

输出remote_addr- 找到的第一个值.

请注意,结构的排序不能保证 - 第一个值在不同情况下可能不同.

要获得所有结果,只需将scope参数指定为all:

<cfset Result = StructFindValue( CGI , '127.0.0.1' , 'all' ) />

<cfloop index=i from=1 to=#ArrayLen(Result)#>
    <cfdump var=#Result[i].Key# />
</cfloop>
Run Code Online (Sandbox Code Playgroud)

输出remote_addr remote_host local_addr.