Php 向查询中的值添加别名

Php 向查询中的值添加别名,php,Php,对不起,如果我的问题不太容易理解,我的英语不是很好。我为SQL查询处理所有带引号的字段,我通过函数array_map()完成这项工作,我需要向表的每个字段别名中添加 当我这样做的时候: private function fieldClause($fields, $alias) { if(is_array($fields)) { $fields = array_map(function($field) { return" $alias.`$

对不起,如果我的问题不太容易理解,我的英语不是很好。我为SQL查询处理所有带引号的字段,我通过函数array_map()完成这项工作,我需要向表的每个字段别名中添加 当我这样做的时候:

private function fieldClause($fields, $alias) 
{



    if(is_array($fields)) {

        $fields = array_map(function($field) {
            return" $alias.`$field`";
        },$fields);

    }

    $fields = implode(",", $fields);    
    return $fields;

}

Im获取错误-未定义变量:别名在匿名函数中未定义$alias变量,必须将其作为参数添加到函数中。还要注意backtick运算符[1],尽管我不确定在双引号字符串中如何计算backtick

此版本将为$fields数组中的每个元素输出“$field.$alias”:

function mapAlias ($field, $alias) {
  return "$alias.$field";
}

if (is_array($fields)) {
  $fields= array_map("mapAlias", $fields, $alias);
}

[1]

如果您想继续使用匿名函数,可以使用
use

private function fieldClause($fields, $alias) 
{
    if(is_array($fields)) {
        $fields = array_map(function($field) use ($alias) {
            return" $alias.`$field`";
        },$fields);
    }

    $fields = implode(",", $fields);    
    return $fields;

}

否则,创建另一个与
array\u map()
一起使用的函数,并传递2个参数。

这是因为
$alias
不在匿名函数的范围内。可能会回答你的问题。谢谢你的工作!!)