为了在函数之外使用变量,我必须这样做:
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
如果有很多全局变量怎么办?我只想让它们全部在函数内局部作用?如何在不在每个函数开头维护一长串全局声明的情况下执行此操作?我并不关心最佳做法,也不关心它可能被视为危险的所有原因。
答案 0 :(得分:2)
你为什么不这样做:
$a = 1;
$b = 2;
function Sum()
{
$args = func_get_args();
$result = 0;
foreach($args as $arg) {
$result += $arg;
}
return $result;
}
$b = Sum($a, $b);
echo $b;
然后更通用,能够接受不同的参数,或者两个以上的参数,并且在很多情况下都很有用。
答案 1 :(得分:1)
理想情况,您的功能所需的一切都应该在参数中。
function Sum($a, $b) {
return $a + $b;
}
如果你真的无法避免引用函数范围之外的变量,你有几个选择:
使用$ GLOBALS数组:
function Sum() {
return $GLOBALS['a'] + $GLOBALS['b'];
}
使用global
关键字:
function Sum()
global $a, $b;
return $a + $b;
}
使用"anonymous" function并注入全局
$Sum = function() use ($a, $b) {
return $a + $b;
}
$result = $Sum();
如果您想使用不全局的功能声明的范围内的变量,匿名函数会更有用。
extract()来自$GLOBALS
function Sum() {
extract($GLOBALS);
return $a + $b;
}
这最后一个选项将引入所有全局变量,并且似乎正是您正在寻找的。 p>
但严重,尽可能参数化。