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