PHP中的会话变量和全局变量之间有什么区别?
全局变量是可以从应用程序中的任何位置访问的变量,因为它们具有全局作用域。
会话变量也可以从应用程序中的任何位置访问,但对于不同的用户来说,它们是不同的,因为它们取决于会话。当特定的用户会话结束时,它们就会死亡。
global
只是一个关键字,用于访问在顶级作用域中声明但在实际作用域中不可用的变量。这与会话无关:不要在页面之间持久存在。
$a = "test";
function useGlobalVar(){
echo $a; // prints nothing, $a is not availabe in this scope
global $a;
echo $a; // prints "test"
}
$GLOBALS
是访问顶级作用域变量的另一种方式,无需使用global
关键字:
$a = "test";
function useGlobalVar(){
echo $GLOBAL['a']; // prints "test"
}
global
和superglobals
之间有点混淆:超级全局(如$GLOBALS、$_REQUEST、$_SERVER)在任何范围内都可用,而无需进行全局声明。同样,它们不会在页面之间持久存在($_SESSION除外)。
$_SESSION是一个跨不同页面持久存在的超级全局数组。
会话变量是存储在服务器端的变量,在给定的客户端连接中保持不变。
全局变量是在php代码中具有通用(global…)作用域的变量。这些变量不一定依赖于给定的客户端连接
有关会话,请参阅:http://www.php.net/manual/en/book.session.php
有关全局变量,请参阅:http://www.tutorialspoint.com/php/php_global_variables.htm
最后,这种类型的问题不是最适合这个论坛的,请参阅:https://stackoverflow.com/faq#dontask
"你只应该根据你面临的实际问题提出实用的、可回答的问题。闲聊的、开放式的问题会削弱我们网站的有用性,并将其他问题推到头版。
你的问题范围应该合理。如果你能想象一整本书都能回答你的问题,那你就要求太多了。
如果你问这个问题的动机是"我想参加一个关于______的讨论",那么你不应该在这里问。然而,如果你的动机是"我希望其他人向我解释______",那么你可能没事。(当然,我们的实时网络聊天欢迎讨论。)"
全局变量是在任何函数或类范围之外声明的任何变量,并通过使用global
关键字在另一个函数内部使用,例如
$a = 123; // this is a global variable
function foo()
{
global $a; // and this is the explicit declaration
}
超级全局变量类似于常规全局变量,只是它们在函数中被隐式声明为全局变量,因此它们总是可用的。
最后,会话变量可通过超全局$_SESSION
访问,并通过发送和接受会话标识符来永久化。
全局变量是那些可以在全php文件中访问的变量,php定义了一些全局变量,这些全局变量可用于所有php脚本。例如$_POST、$_SESSION、$_REQUEST。
global也是一个关键字,当您想要访问在函数外部定义的变量时使用它。
<?php
$name = "xyz" ;
function hello(){
global $name ;
echo $name ;
}
?>