PHP:使用函数内部的变量

时间:2011-01-13 19:43:16

标签: php

我有:

include ('functions.php');
check_blocked();
echo $blocked;

在functions.php中,check_blocked();存在。在check_blocked里面我得到了:

global $blocked;
$blocked = '1234';

我想回调$ blocked变量,它位于check_blocked()内。

它不起作用,没有输出..

这是我原来问题的一个例子,所以请不要说我可以在函数内部使用echo,因为我的原始代码中没有。

5 个答案:

答案 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';
}