向查询中的值添加别名


Add alias to values in query

如果我的问题不太容易理解,很抱歉。我的英语不是很好。我处理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;
}

我得到错误-未定义的变量:别名

在匿名函数中,$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]http://us3.php.net/manual/en/language.operators.execution.php

如果您想坚持使用匿名函数,可以使用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_map()一起使用的函数并传递2个参数。