Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php新手问题:web的全局变量_Php_Global Variables - Fatal编程技术网

php新手问题:web的全局变量

php新手问题:web的全局变量,php,global-variables,Php,Global Variables,我想设置一些全局变量来存储一些东西。 我试过这样做: function init_web() { $webname = "myweb"; $web['webname'] = $webname; $web['server_root'] = $_SERVER['DOCUMENT_ROOT']."/$webname/"; $web['lang']="en"; } 问题是我无法访问函数中的这些变量。。 我试过使用global$web但是没有帮助 让它全球化的诀窍是什么

我想设置一些全局变量来存储一些东西。 我试过这样做:

function init_web()
{
    $webname = "myweb";
    $web['webname'] = $webname;
    $web['server_root'] = $_SERVER['DOCUMENT_ROOT']."/$webname/"; 
    $web['lang']="en";
}
问题是我无法访问函数中的这些变量。。 我试过使用
global$web但是没有帮助

让它全球化的诀窍是什么


谢谢

虽然你会听到通常的“全局变量不好”的哭声,但以下是一些基本信息:

$web = array(); // define the var at the "top level" of the code tree, outside any functions/classes.
function init_web() {
    global $web; // make it visible in the function
    $web['lang'] = 'en'; // make some settings
}

基本上,您拥有它,但没有在函数外定义变量。仅仅在函数内说“全局”并不能神奇地在函数外创建一个函数-在您尝试将其“内部化”到函数并更改/访问其内容之前,它必须已经存在。

虽然您会听到通常的“全局变量不好”的哭声,但以下是基本信息:

$web = array(); // define the var at the "top level" of the code tree, outside any functions/classes.
function init_web() {
    global $web; // make it visible in the function
    $web['lang'] = 'en'; // make some settings
}

基本上,您拥有它,但没有在函数外定义变量。只在函数中说“全局”不会神奇地在函数外创建一个函数-在您尝试将其“内部化”到函数并更改/访问其内容之前,它必须已经存在。

您可以定义它们

define('WEBNAME',"myweb");
并且可以在应用程序中的任何地方使用,因为常量在默认情况下是全局的


这是一种将常量存储为常量的方法,因为在您移动到新服务器或更改配置之前,它们不会动态更改。

您可以将它们定义为常量

define('WEBNAME',"myweb");
并且可以在应用程序中的任何地方使用,因为常量在默认情况下是全局的


这是一种将常量存储为常量的方法,因为在您移动到新服务器或更改配置之前,它们不会动态更改。

您可以使用会话变量:

session_start(); // at the top of the php page
function init_web()
{
    $webname = "myweb";
    $_SESSION['webname'] = $webname;
    $_SESSION['server_root'] = $_SERVER['DOCUMENT_ROOT']."/$webname/"; 
    $_SESSION['lang']="en";
}

现在它们可以“全局”访问:-)

您可以使用会话变量:

session_start(); // at the top of the php page
function init_web()
{
    $webname = "myweb";
    $_SESSION['webname'] = $webname;
    $_SESSION['server_root'] = $_SERVER['DOCUMENT_ROOT']."/$webname/"; 
    $_SESSION['lang']="en";
}

现在,它们可以“全局”访问:-)

在函数外部声明
$web
,并在函数内部使用
$GLOBALS
超全局:

// Declare in global scope
$web = array();

function init_web()
{
  $webname = "myweb";
  // Access via superglobal in function scope
  $GLOBALS['web']['webname'] = $webname;
  $GLOBALS['web']['server_root'] = $_SERVER['DOCUMENT_ROOT']."/$webname/"; 
  $GLOBALS['web']['lang']="en";
}

在函数外部声明
$web
,并在函数内部使用
$GLOBALS
超全局:

// Declare in global scope
$web = array();

function init_web()
{
  $webname = "myweb";
  // Access via superglobal in function scope
  $GLOBALS['web']['webname'] = $webname;
  $GLOBALS['web']['server_root'] = $_SERVER['DOCUMENT_ROOT']."/$webname/"; 
  $GLOBALS['web']['lang']="en";
}

你走在正确的轨道上:

$web = array();

function init_web()
{
    global $web;
    $webname = "myweb";
    $web['webname'] = $webname;
    $web['server_root'] = $_SERVER['DOCUMENT_ROOT']."/$webname/"; 
    $web['lang']="en";
}

你走在正确的轨道上:

$web = array();

function init_web()
{
    global $web;
    $webname = "myweb";
    $web['webname'] = $webname;
    $web['server_root'] = $_SERVER['DOCUMENT_ROOT']."/$webname/"; 
    $web['lang']="en";
}

如果只是存储标量值(字符串、整数、浮点-而不是数组、对象),则应使用
define()

这将使您的配置具有全局性和稳定性

至于回答你的问题,


首先在该函数范围外定义变量(可能在配置文件中),然后在需要时使用
global
关键字使其成为全局变量

如果只是存储标量值(字符串、整数、浮点-而不是数组、对象),则应使用
define()

这将使您的配置具有全局性和稳定性

至于回答你的问题,


首先在该函数范围外定义变量(可能在配置文件中),然后在需要时使用
global
关键字使其成为全局变量

我发现它也是这样工作的:$web=init_web();其中init_web返回$web变量,然后使用全局$web;但我认为它和建议的一样,我发现它也是这样工作的:$web=init_web();其中init_web返回$web变量,然后使用全局$web;但我认为这和建议的一样。