PHP全球问题

时间:2010-11-26 10:08:14

标签: php

如何使用global关键字,以便当我按下提交按钮时,我可以设置global关键字,以便脚本的顶部有效?

位于脚本之上。

if(!isset($u)){
    echo 'the $u has no value';
} else if(isset($u)){
    echo 'the $u has a value of yes';
}

位于脚本的底部。

if (isset($_POST['submit'])){
    global $u;
    $u = 'yes';
}

3 个答案:

答案 0 :(得分:2)

全局与范围相关,而不是与执行顺序相关

如果两段代码都是全局的,即未包含在函数中,则'global'关键字无效,因为它们在同一范围内

正如另一个答案正确指出的那样,你的问题是执行问题的顺序,而不是范围问题

答案 1 :(得分:1)

这不是全球意味着什么。全局意味着可以在函数内部访问变量等。您可能想要使用Sessions。这涉及到

sesssion_start();

某处(通常是脚本的顶部)。 然后可以通过

存储和检索变量
$_SESSION['name'] = $foo;//Store a variable into the session
$bar = $_SESSION['bar'];//Retrieve a variable from the session

在您的情况下,您可以将u变量存储到会话中,并在提交后检索它。

您是否有某种原因不只是通过表单传递此值?

答案 2 :(得分:0)

你必须运行

if (isset($_POST['submit'])){
    global $u;
    $u = 'yes';
}

之前的

if(!isset($u)){
    echo 'the $u has no value';
} else if(isset($u)){
    echo 'the $u has a value of yes';
}

PHP逐行读取代码,因此isset($ u)总是返回FALSE直到行$ u ='yes';跑了。