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;但我认为这和建议的一样。