php超级全局变量

PHP $GLOBALS

$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
$GLOBALS 是一个包含了全部变量的全局组合数组。
变量的名字就是数组的键。所以在调用的时候为$GLOBALS[‘var’],而不是$GLOBALS[“$var”],””存在解析的作用.

1
2
3
4
5
6
7
8
9
10
11
<?php
$var1='www.phpernote.com';
$var2='www.google.cn';
test();
function test(){
$var1='taobao';
echo $var1,'<br />';
global $var1;
echo $var1,'<br />';
echo $GLOBALS['var2'];
}

1

$GLOBALS:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组。变量的名字就是数组的键)
所以这就很好理解它的作用了。

这里要说明一下,$GLOBALS和global的区别:
$GLOBALS[‘var’]是外部的全局变量本身,而global $var是外部$var的同名引用或者指针,也就是说global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,而$GLOBALS[]确确实实调用的是外部的变量,函数内外会始终保持一致。

放上一个例子:

1
2
3
4
5
6
7
8
9
<?php
$var1=1;
$var2=2;
function test(){
$GLOBALS['var2']=&$GLOBALS['var1'];
}
test();
echo $var2;
?>

输出:1

1
2
3
4
5
6
7
8
$var1=1;
$var2=2;
function test(){
global $var1,$var2;
$var2=&$var1;//&为变量引用符
}
test();
echo $var2;

输出:2
这里仅仅是因为$var1的引用指向了$var2的引用地址,就好比在这个函数中把房间1的房号给了房间2,等这个函数结束后,房间2还是房间2,房间里的人数都没有改变。

再放一个例子

1
2
3
4
5
6
$var1=1;
function test(){
unset($GLOBALS['var1']);
}
test();
echo $var1;

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

1
2
3
4
5
6
7
$var1=1;
function test(){
global $var1;
unset($var1);
}
test();
echo $var1;

打印结果为1.因为var1只是一个别名,一个门牌号,test()获取了这个门牌号,把门牌号毁掉,那么房间里的人还是在啊。
证明了证明删除的只是别名|引用,其本身的值没有受到任何的改变。
也就是说global $var其实就是$var=&$GLOBALS[‘var’]

PHP $_SERVER

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。
这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目
这里有一个例子,如何使用 $_SERVER中的元素:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php 
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

此处列出常见的$_SERVER的元素:
2
3

PHP $_REQUEST

$_REQUEST — HTTP Request 变量

PHP $_REQUEST 用于收集HTML表单提交的数据。

默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组

以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 “Submit” 按钮提交表单数据时, 表单数据将发送至

标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php
$name = $_REQUEST['fname'];
echo $name;
?>

</body>
</html>

0%