php 全局变量 $global 跨文件,PHPGlobal全局变量 - 米扑博客

本文详细探讨了PHP全局变量的用途、在函数内外的应用规则,并针对config.inc.php全局变量复用问题提供了常量定义和数组策略的解决方案。同时,讲解了$global和$GLOBALS的区别,帮助读者理解全局变量的底层工作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Global是php中一个比较特殊的命令,大家直接叫他超级全局变量。

很不习惯PHP中的变量作用域,PHP中函数变量和全局是完全隔绝的,也就是无法相互访问。

PHP Global变量在实际应用中,会发现有许多问题需要我们不断的去完善处理。

在这篇文章中就针对PHP Global变量出现的问题给出了一些具体的解决办法。

1. PHP Global变量的作用是定义全局变量

但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件

$a = 123;

function aa()

{

Global $a;  // 如果不把$a定义为global变量, 函数体内是不能访问$a的

echo $a;

}

aa();

小结

在函数体内定义的PHP Global变量,函数体外可以使用;

在函数体外定义的global变量,不能在函数体内使用。

示例:

$global $a;// 函数体外定义global变量,函数体内不能使用

$a = 123;

function f() {

echo $a;       // 错误

}

再看一例

function f()

{

global $a;    // 函数体内定义global变量,函数体外可以使用

$a = 123;

}

f();

echo $a;       // 正确,可以使用

2 PHP Global 变量的有关问题

问题:在config.inc.php中定义了一些变量($a),在别的文件中函数外部 include("config.inc.php"),函数内部需要使用这些变量$a,如果没有声明的话,echo $a是打印不出来任何东西的。因此声明global $a,但是有很多函数和很多变量,总不能不断重复的这样声明吧?有什么好的解决办法?

解答1:先在config.inc.php里定义常量:define(常量名,常量值),再在其他需要用到的地方require 'config.inc.php',然后就能在这个文件里直接使用这个常量了(推荐)

解答2:定义数组,如$x[a],$x,那样就只要声明global $x一个了(此方法不行)

解答3:改你的php.ini文件。 设置PHP Global变量 为 on

PHP 全局变量global和$GLOBALS[] 区别

$GLOBALS['var']是外部的全局变量本身,global $var是外部$var的同名引用或者指针

一、举例比较

示例1:

$var1 = 1;

function test() {

unset($GLOBALS['var1']);

}

test();

echo $var1;

?>

因为$var1被删除了,所以什么东西都没有打印。

示例2:

$var1 = 1;

function test() {

global $var1;

unset($var1);

}

test();

echo $var1;

?>

意外的打印了1。

证明删除的只是别名引用,其本身的值没有受到任何的改变。

二、解释

global $var其实就是&$GLOBALS['var'],调用外部变量的一个别名而已。

上面代码中的$var1和$GLOBALS['var1']是指的同一变量,而不是两个不同的变量。

PHP的全局变量和C语言有一点点不同。

在C语言中,全局变量在函数中主动生效,除非被局部变量笼罩(重载)。这可能引起一些问题,有些人可能漫不经心的转变一个全局变量。PHP中全局变量在函数内应用时必须用global申明为全局。

PHP的Global变量的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。

三、结论

1. $GLOBALS['var']是外部的全局变量本身

2. global $var是外部$var的同名引用或者指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值