php中的会话变量和全局变量之间的区别是什么


What is the difference between session variables and global variables in 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"
}

globalsuperglobals之间有点混淆:超级全局(如$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 ;
  }
  ?>