变量是存储数据的容器
PHP 变量规则:
- 变量以 $ 符号开头,其后是变量的名称
- 变量名称必须以字母或下划线开头
- 变量名称不能以数字开头
- 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
- 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
注释:PHP 变量名称对大小写敏感!
//转载自w3cschool
php支持${"MyVar"}这类命名格式。
当一个变量没有赋初值时,这个变量为Null型,值等价于0,false,''。
php的变量分为全局变量与局部变量
在函数内部定义的变量为局部变量,在函数外部定义的变量为全局变量。
局部变量的作用域在函数内部,全局变量的作用域在函数外部。
若要在函数内部调用全局变量,需要在变量前加global关键词声明或者$GLOBALS['要调用的全局变量的名称']。
php中常用的超全局变量
1.$_GET,get传送方式。
2.$_POST,post传送方式
3.$_REQUEST可以接收到get和post两种方式的值
4.$GLOBALS所有的变量都放在里面
5.$_FILES上传文件使用
6.$_SERVER系统环境变量,返回服务器的信息
7.$_SESSION会话控制,获取session的值
8.$_COOKIE会话控制,获取cookie的值
下面的程序选自php面试题中,坑点较多,特此记录。
$a=0;
$b=0;
//$a=3||$b=3;
if($a=3||$b=3)
{
$a++;
$b++;
}
var_dump($a);
var_dump($b);
//echo $a=3|$b=4;
if($a=3|$b=3)
{
$a++;
$b++;
}
$a=$b;
//unset($b);
var_dump($a);
var_dump($b);
上述程序的运行结果为:
程序分析:
第一个if中的“$a=3||$b=3”可以看做"$a=(3||$b=3)",括号内的3为真所以根据短路定理不执行$b=3,所以$b此时仍然为0,而此时||运算符的返回值为true,赋值给a,因此a从整型变为布尔型,值为true,true++仍为true,所以输出值为1,而b++变为1。
第二个if中的“$a=3|$b=4”可以看做"$a=(3|$b=3)",所以a=3,b=3。(“|”位或运算符,执行两边的语句),之后a++,b++,则结果为a=4,b=4。
在用变量给变量赋值时需要注意有无&,例如将变量a赋值给变量b若有&则是将变量a的值赋值给变量b,如果删除了变量a则不会影响到变量b,但如果没有带&,则是将变量a指向值存储地址的指针赋值给变量b,意味着a与b指向同一片内存空间,若删除了a则b错指向的内存就为空,程序运行时会提出警告。
注:当给变量赋整型时若数字为“0123”之类的格式时,会按8进制运算,如果为“0x123”,会按16进制来运算。
检验变量是否存在使用isset()函数。
变量使用unset()函数删除。
检测变量是否为空使用empty()函数。
引用符&与指针的区别在于指针是一个实体,而引用只是只内存块的别名。