PHP 中的会话变量和全局变量有什么区别?
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
的概念:Superglobals(比如 $GLOBALS、$_REQUEST、$_SERVER)在任何范围内都可以使用,无需进行全局声明。需要注意的是,它们不会跨页面持久化(唯一例外的是 $_SESSION)。
$_SESSION 是一个持久化存在于不同页面间的 Superglobal 数组。全局变量是在任何函数或类范围之外声明并在另一个函数中使用的变量,使用 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 ;
}
?>
会话变量是存储在服务器端的变量,对于给定的客户端连接保持不变。
全局变量是具有通用(全局...)作用域的变量。这些变量不一定依赖于给定的客户端连接。
有关会话,请参见: http://www.php.net/manual/en/book.session.php
有关全局变量,请参见: http://www.tutorialspoint.com/php/php_global_variables.htm
最后,这种类型的问题并不适合在本论坛提问,请参见: https://stackoverflow.com/faq#dontask
“您应该只提出基于实际问题的实用性可回答的问题。闲聊、开放式的问题会降低我们网站的实用性,并将其他问题挤出首页。
您的问题应该有合理的范围。如果您可以想象一本完整回答您的问题的书,那么您就要求太多了。
如果您问问题的动机是“我想参与关于______的讨论”,那么您不应该在这里提问。但是,如果您的动机是“我希望其他人向我解释______”,那么您可能可以。 (当然,我们的实时网络聊天室欢迎讨论。)