PHP范围和全局

时间:2014-01-16 15:36:17

标签: php

我有以下代码:

<html>
<body>
    <h1><?isFoo();?></h1>
</body>
</html>
<?php
$foo_app_cookie_val = "foo";

function isFoo() {
    global $foo_app_cookie_val;
    echo "in isFoo: '$foo_app_cookie_val'<br/>";
    return isApp($foo_app_cookie_val);
}
?>

我得到的输出是:

isFoo: ''

为什么我没有看到$ foo_app_cookie_val的实际值?

2 个答案:

答案 0 :(得分:10)

输出 $foo_app_cookie_val后,

foo设置为<h1><?isFoo();?></h1> 。将脚本更改为:

<?php
$foo_app_cookie_val = "foo";

function isFoo() {
    global $foo_app_cookie_val;
    echo "in isFoo: '$foo_app_cookie_val'<br/>";
    return isApp($foo_app_cookie_val);
}
?>
<html>
<body>
    <h1><?isFoo();?></h1>
</body>
</html>

答案 1 :(得分:4)

在设置isFoo()的值之前,会调用

$foo_app_cookie_val。尝试将大块PHP代码移动到文件的顶部,如下所示:

<?php
$foo_app_cookie_val = "foo";

function isFoo() {
    global $foo_app_cookie_val;
    echo "in isFoo: '$foo_app_cookie_val'<br/>";
    return isApp($foo_app_cookie_val);
}
?>
<html>
<body>
    <h1><?isFoo();?></h1>
</body>
</html>

实际声明函数无关紧要。重要的是调用与设置全局变量相关的函数。