array_map_op
在 NGINX 配置中,`array_map_op` 指令对数组类型变量的每个元素应用特定操作。
Array-typed variables for NGINX
·
httpserverlocationif in serverif in location
语法array_map_op operation $array_var [to=$target_variable];
默认值none
上下文http, server, location, if in server, if in location
参数2-3
说明
在 NGINX 中,array_map_op 指令用于对数组类型变量的每个元素执行操作,该功能由 array-var-nginx-module 提供。它根据上下文接受两个或三个参数,用于根据指定的模板或函数来操作数组的元素。第一个参数定义要应用的操作,第二个参数指定涉及的数组变量。如果提供第三个参数,则可以指示操作的附加选项,例如操作是否应就地修改数组。
当你使用 array_map_op 时,NGINX 会在内部遍历指定数组的每一项并应用定义的操作,将结果根据配置存回同一数组或保存到新数组。该指令在需要在进一步处理之前转换数组中的数据时特别有用,例如从字段名数组生成 SQL 条件。将该指令与 array_split 和 array_join 结合使用,可以在 NGINX 内部对查询字符串或其他数据格式进行强大的处理,而无需使用外部脚本语言。
配置示例
location /example {
array_split "," $arg_query to=$array;
array_map_op trim_spaces $array;
array_join ' AND ' $array to=$where_clause;
echo "SELECT * FROM my_table WHERE $where_clause";
}⚠
确保作为第一个参数指定的操作是有效且已适当定义的,以避免配置错误。
⚠
尝试使用未定义的数组变量会在运行时导致意外结果或错误。
⚠
注意就地修改选项,因为它可能在不创建新实例的情况下更改原始数组,具体取决于使用场景。