我试图在php中的函数内包含globals变量,但有些东西不起作用。
试过但不能工作:
$row = fetch_row("SELECT id,name FROM $GLOBALS['var'] where id = $id");
or
$row = fetch_row("SELECT id,name FROM `$GLOBALS['var']` where id = $id");
or
$row = fetch_row("SELECT id,name FROM '$GLOBALS['var']' where id = $id");
or
$row = fetch_row("SELECT id,name FROM $GLOBALS[\"var\"] where id = $id");
答案 0 :(得分:5)
当您使用" "
时,您可以在字符串中包含变量,但是,因为您尝试访问数组值,这将引发错误。
在这种情况下你可以做的是连接字符串或将变量包装在{ }
中。
所以这个:
"SELECT id,name FROM " . $GLOBALS['var']. " where id = $id"
或
"SELECT id,name FROM {$GLOBALS['var']} where id = $id"
此外,此时您实际上并不在函数内部,只是将该字符串传递给它。
希望这有帮助!
答案 1 :(得分:2)
正如variable scope in PhP
文档中所述,脚本中的变量不会与其功能共享。
您需要使用org.apache.hadoop.mapred.TextInputFormat.getSplits
关键字手动包含它们,然后是您需要在函数内处理的变量。我将复制/粘贴同一页文档的示例,因为它非常清楚它发生了什么:
global
将回应:
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
该函数使用了3
和$a
的值,这些值已在函数外部设置。如果您没有使用行$b
,则会发出错误,指出无法找到这些变量。
答案 2 :(得分:0)
它不起作用,您必须声明要访问的全局变量
使用global
关键字。和变量的字符串格式。
global $var;
声明后,您可以使用以下查询:
fetch_row("SELECT id,name FROM {$GLOBALS['var']} where id = $id");
PHP Manual Link for Global variable
对于可变范围,您可以看到此Link。