我对函数内的全局变量有问题
<?php
function main(){
$var = "My Variable";
function sub() {
GLOBAL $var;
echo $var; // Will show "My Variable"
}
sub();
echo $var; // Will show "My Variable"
}
main();
sub(); // Will not show and I will sub() cant use outside main() function
?>
$var
sub()
无法在main()
功能我绑定使用GLOBAL
,但它没有显示任何内容......任何?
答案 0 :(得分:1)
您没有为全局范围变量$var
分配值
只有main()
为名为$var
的变量分配值,但仅在main()
的范围内。并且只有main()
的{{1}}实际打印了该值。对echo $var;
的两次调用都不会产生输出
尝试用
sub()
输出
<?php
function main(){
$var = "My Variable";
function sub() {
GLOBAL $var;
echo 'sub: ', $var, "\n";
}
sub();
echo 'main: ', $var, "\n";
}
main();
sub();
答案 1 :(得分:1)
不确定我是否理解你想要的东西,但你的$var
不是全球性的。它是main()
如果在函数或类之外声明变量,则变量只是全局变量。
<?php
$var = "My Variable"; // made $var global
function main(){
//removed $var here
function sub() {
global $var;
echo $var; // Will show "My Variable"
}
sub();
echo $var; // Will throw notice: Undefined variable: var
}
main();
sub(); // Will show "My Variable"
?>
为什么要在方法中声明一个方法来从那里调用它?
也许这就是你想要的......
<?php
//$var = "My Variable";
function main(){
$var = "My Variable";
$sub = function($var) {
echo "sub: ".$var; // Will show "sub: My Variable"
};
$sub($var);
echo "main: ".$var; // Will show "main: My Variable"
}
main();
// sub(); // Will not work
// $sub(); // Will not work
?>