这篇文章主要为大家详细介绍了PHP变量类型和作用域的深入分析,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小玲来看看吧!
PHP中变量的作用域可以分为:超全局(全局变量的特殊类型,在局部范围里可直接使用),全局,局部,静态(是局部变量的特殊类型)
在PHP中,全局变量实际上是静态全局变量,如果不用unset显式的释放,那么等脚本运行结束全局变量才会被释放掉
局部静态变量细分可以是 局部静态函数变量(函数中声明的static变量),局部静态成员变量(类中声明的 static 属性,被所有类实例共享)
局部静态变量只有脚本运行结束才会被自动释放
超全局变量:在一个脚本的任何作用域里都可以被访问,这些都是PHP内置的
代码如下:
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_SESSION(持久化存储)
$_COOKIE(持久化存储)
$_REQUEST
$_ENV
静态变量: 在function中使用关键词static声明的变量,静态变量的值保留直至脚本结束
局部变量:在class,function,if/while/for等结构语句内部声明的变量
1.global关键词和$GLOBALS实例
代码如下:
<?php
/* 四海网 www.q1010.com */
$a = 0;
function foo()
{
global $a;
echo $a;
}
function foo2()
{
echo $GLOBALS['a'];
}
代码如下:
<?php
/* 四海网 www.q1010.com */
function foo1()
{
$var = 0;
$var++;
return $var;
}
echo foo1();
echo foo1();
//输出都是1
function foo ()
{
static $var = 0;
$var++;
return var;
}
echo foo();
echo foo();
另外理解static变量的一段代码:
代码如下:
<?php
/* 四海网 www.q1010.com */
class t
{
static $v = 10;
public function a()
{
static $var = 10;
$var++;
echo $var . "<br>\n";
}
public static function aa()
{
self::$v++;
echo self::$v . "<br>\n";
}
}
$o1 = new t();
$o1->a();//输出11
$o2 = new t();
$o2->a();//输出12
t::aa();//输出11
$o1->aa();//输出12
$o2->aa();//输出13
从上面的代码中,可知如果一个类成员方法中有静态变量,即使是不同的类实例,他们也会共享这个静态变量,尽管这个静态变量不是类静态成员变量,这点容易让人迷惑。
本文来自:http://www.q1010.com/173/16529-0.html
注:关于PHP变量类型和作用域的深入分析的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:变量类型,作用域
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。