我有:
include ('functions.php');
check_blocked();
echo $blocked;
在functions.php中,check_blocked();存在。在check_blocked里面我得到了:
global $blocked;
$blocked = '1234';
我想回调$ blocked变量,它位于check_blocked()内。
它不起作用,没有输出..
这是我原来问题的一个例子,所以请不要说我可以在函数内部使用echo,因为我的原始代码中没有。
答案 0 :(得分:4)
您的代码应该是
$blocked = 0;
include('functions.php');
check_blocked();
echo $blocked;
使用functions.php看起来像
function check_blocked(){
global $blocked;
$blocked = 1234;
}
在全局阻止函数之前,必须在函数范围之外定义阻塞。
答案 1 :(得分:4)
为什么不直接返回值?
function check_blocked() {
$blocked = '1234';
return $blocked;
}
然后
include ('functions.php');
echo check_blocked();
尽可能避免使用Globales。
答案 2 :(得分:0)
除非在check_blocked()函数之外声明变量,否则不能。
$foo = null;
function check_blocked() {
global $foo;
$foo = "Hello";
// do some stuff
}
global $foo;
echo $foo; // prints "Hello"
如果它在函数内部定义如:
function check_blocked() {
global $foo;
$foo = "Hello";
// other work
}
global $foo;
echo $foo; // Nothing
然后该变量在本地作用域,并在函数完成后立即丢弃。
答案 3 :(得分:0)
您可以将check_blocked()
更改为返回$blocked
,也可以尝试使用:
include ('functions.php');
check_blocked();
global $blocked;
echo $blocked;
答案 4 :(得分:0)
而是使用返回值。全局变坏了。
include ('functions.php');
echo check_blocked();
function check_blocked() {
return '1234';
}