1、变量的声明:
- 无需对变量进行类型声明。
- 以”$”为前缀,字母a-z大小写或者下划线开头。
2、赋值:
- 传值赋值:“=”。
- 引用赋值:“=”的右边的变量前面加上一个“&”,两个变量将会指向内存中同一个储存空间,所以任意一个变量的变化都会引起另一个变量的变化。
3、可变变量和变量的引用:
- 可变变量:允许使用一个变量的值作为另一个变量的名
$a = "b";
$$a = "c"; //$$a相当于$b => $b = "c"
- 变量引用:使用“&”来引用变量,与引用赋值相同。两个变量名指的是同一 个变量。
$a = "abc";
$b = &$a; //$b与$a的值相等,且使用的是同一块存储空间。
4、变量的作用域:指特定变量在代码中可以被访问到的位置
内置超全局变量,代码中任意位置都可以访问,详细案例参考:
- $GLOBALS : 包含全局变量的数组。
- $_GET : 包含所有通过GET方法传递给代码的变量的数组。(可用于收集提交 HTML 表单 (method=”get”) 之后的表单数据; 也可以收集 URL 中的发送的数据。)
- $_POST : 所有通过POST方法传递给代码的变量的数组。
- $_FILES:包含文件上传变量的数组。
- $_SERVER:包含服务器环境变量的数组。
- $_REQUEST:包含用户所有输入内容的数组(包括GET,POST,COOKIE)
- $_ENV : 环境变量数组。
- $_COOKIE:cookie变量数组。
- $_SESSION:会话变量数组。
常数,一旦声明就是全局变量,在函数内外都可以使用。
全局变量:在函数外声明的变量,在代码间都可以访问,但是在函数内是不能访问的的。
如果想让函数访问全局变量,可以在函数中通过关键字global声明,(就是告诉函数他要调用一个已经存在的或者即将创建的同名全局变量);
$room = 20;
function showrooms(){
global $room; //使用关键字global声明变量
echo $room."间房间";
}
showroom();
或者通过超全局的$GLOBALS数组进行访问。
$room = 20;
function showroom(){
$room = $GLOBLAS['room']; //通过$GLOBALS数组访问全局变量
echo $room."间房间";
}
showroom();
- 在函数中创建和声明为静态变量的变量在函数外无法访问,但是静态变量的值可以保留。
- 在函数中创建和声明局部变量在函数外无法访问,并且本函数终止时失效。
5、变量的销毁
当用户创建一个变量,相应的内存中有一个空间专门用于存储该变变量,该空间引用计数加1,当该变量与该空间的联系被断开时,空间引用计数减1,直到计数为0则成为垃圾。PHP有自动回收垃圾的机制,也可以手动销毁,使用unset();
语法格式:
void unset(变量);
注意全局变量不会被销毁(global声明的变量)。