很抱歉,如果我的问题不那么容易理解。我的英语不太好。我使用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;
}
我得到错误 - 未定义的变量:别名
答案 0 :(得分:0)
在您的匿名函数中,未定义$ alias变量,您必须将其作为参数添加到您的函数中。还要注意反引号操作符[1],即使我不确定如何在双引号字符串中评估反引号。
此版本将在$ 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
答案 1 :(得分:0)
如果您想坚持使用匿名功能,可以使用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个参数。