php global与$GLOBALS

1.php 变量介绍

PHP 中 变量分三类:局部变量、全局变量、超全局变量

1.在函数内部声明的变量,就是局部变量,当函数执行完毕,局部变量就消失了。局部变量,只能在函数内部使用。

2.在函数外部声明的变量,就是全局变量。在 PHP 中,全局变量,在函数中不能使用,网页执行完毕,全局变量消失。

3.系统定义的变量,就是超全局变量。该变量可以在任何地方直接使用。

      超全局变量                              描述
      $_GET                      主要用来获取 HTTP GET方式传递的数据。
      $_POST                    主要用来获取 HTTP POST方式传递的数据。
      $_REQUEST            主要用来获取 GET 和 POST 方式传递的数据,但是速度相对较慢。
      $_SERVER               主要用来获取服务器执行环境的相关信息。
      $GLOBALS               主要包含GET、_POST、$_COOKIE 数组的内容。
      $_SESSION             主要获取服务器端的会话信息。
      $_COOKIE               主要获取客户端的会话信息。
      $_FILES                   主要获取上传文件的相关信息。
      $ENV                        获取环境信息。(不常用)

2.global

从上面可以知道php 中函数体内的局部变量不能再函数体外使用,函数体外的全局变量不能再函数体内使用,两者,老死不相往来,但是php 语言不会这么二的,PHP global关键字发挥着牵线人的作用,使得两者可以在各自的领域中相互使用。

变量的范围即它定义的上下文背景(也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。例如:以下是test.php中的代码

<?php
	$c=123456;
	include("global.php");
?>

 其中变量$c 为全局变量

这里全局变量 $c 将会在包含文件 global.php 中生效

其中global.php的代码如下

<?php
$a = 1;
$b = 2;
function Sum()
{
    global $c;//来自包含这个文件的文件中的变量
    global $d; //不能在函数体内声明全局变量的同时进行赋值,即不能出现global $d=4;这样的结构
    $d=4; //可以在函数体内声明创建一个全局变量,并赋值
    global $a;
    global $b;  //在里面声明为全局变量
    $a=8;//声明一个全局变量,并改变它
    $b = $a + $b;
	echo $c;
}
Sum();
echo "<br>",$a;
echo "<br>",$b,"<br>";
echo $d;
?>

运行test.php文件

输出结果为:

123456
8
10
4

总结 :global关键字将局部变量与全局变量之前的界限取消了 。但是注意在用global关键字声明全局变量的同时不能对其进行赋值,否则会报错。

3.$GLOBALS

  在 $GLOBALS 数组中,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。

<?php
$a = 1;
$b = 2;
function Sum(){ 
    $GLOBALS["a"] = $GLOBALS["a"] + $GLOBALS["b"];//定义变量时每个都要定义
}
Sum(); 
echo $b; //输出结果为2
?>

注意 $GLOBALS 的写法,比如变量$a1,写法为$GLOBALS['a1']

注意 与global不同的是 $GLOBALS["a"]=某值这种结构是存在的,但是使用时必须严格按照$GLOBALS['a1']的形式,不能使用$a1这种方式,在函数体内会显示$a1未定义。

<?php
$a = 1;
$b = 2;
function Sum()
{
    global $c;
    $GLOBALS['d']=4;
    global $a;
    global $b;  //注意 在函数体内若以$GLOBALS['b']则在函数体内下面的$b也必须换成这种形式,否则会显示变量b为定义
    $a=8;	//在里面声明为全局变量
    $b = $a + $b;
	echo $c;
}
Sum();
echo "<br>",$a;
echo "<br>",$b,"<br>";
echo $d;
echo "<pre>";
//print_r($GLOBALS);
?>

很简单,就不多解释了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值