变量是存储内容的别称,就像人名是人的代称一样,PHP中的变量用来指代数值、字符串、数组等,它的命名要遵守一定的规则:
PHP变量命名规则:
- 变量要以美元符号$开头,如$abc=2;定义一个变量abc
- 变量的名称必须以字母或者下划线开头,不能以数字开头,如$nba=2;$_a=3;分别定义两个变量并给予赋值
- 变量名称只允许包含字母、数字和下划线,其他任何字符都不合法,如不能这样定义$*ac#=2;这是错误的
- 就像上一篇说的,PHP变量对大小写敏感
PHP是一门弱类型语言,在PHP中,变量不需要创建,也不需要指定变量的类型,可以直接被赋值,PHP会根据所赋的值决定来自行决定它的类型,如:
<?php
//定义变量a并赋值1,此时$a即为整型变量
$a=1;
//再将'abc'赋值给a,此时a即为字符串类型
$a='abc';
?>
PHP变量的作用域分为三种:
- 局部作用域:函数内定义的变量拥有局部作用域,只能在函数内部进行访问
- 全局作用域global:函数之外定义的变量拥有全局作用域,在函数以外的任何地方都可以访问,同时PHP在名为$GLOGBALS的数组中存储了所有的全局变量,数组的键名即为变量的名称,键值即为变量的值
- 静态static:一般在某一函数执行完后回自动删除函数定义的所有变量,但当我们不想删除函数中的某一变量时,只需在定义变量时加上static关键字
<?php
$a=1;//此处定义的变量a拥有全局属性
function local(){
$a=3;//此处定义的变量a拥有局部属性
echo 'a的值为:'.$a;
}
local();//执行函数,输出结果:a的值为:3
ehco '此时a的值为:'.$a;//输出结果:此时a的值为:1
?>
但当我们要在函数内访问全局变量时要怎么办呢?不用担心,PHP给我们提供了解决办法,只需在函数中用global关键字即可申明变量是全局的,也可以通过全局变量数组$GLOBALS来访问
<?php
$a=10;
function test(){
global $a;
echo $a;//输出变量a的值
$a=12;//给a重新赋值12
}
test();//此时输出10
echo $a;//此时输出12
?>
关键词static的使用:
<?php
function test(){
static $x=1;//定义静态变量x,并赋值1
$y=1;//定义普通变量y,并赋值1
echo '第'.$x.'次调用函数时,x的值为:'.$x.'<==>'.'y的值为:'.$y.'<br/>';
$x++;
$y++;
}
test();//第一次调用函数
test();//第二次调用函数
test();//第三次调用函数
test();//第四次调用函数
?>