1、变量声明及使用
程序执行过程中数值可以变化的量。通过名字来标识,系统会为其在内存中开辟空间,变量实质是计算机内存单元的命名。借助变量名访问内存数据。
<?php
$string1 = "spcn<br>";//直接定义一个变量后直接赋值。
$string2 = $string1;//变量间的赋值
$string1 = "zhuding";
echo $string2;
$i = "spcn";
$j = &$i;//使用引用赋值,这是$j已经赋值为spcn
$i = "hello, $i";//进行重新赋值。
echo $j;
echo "<br>";
echo $i;//此时两次输出结果相同。
?>
运行结果:
spcn
hello, spcn
hello, spcn
注意:引用和复制的区别在于,复制是讲值复制下来重新再开辟空间存储;引用是给该内存重新起一个名字,相当于换了一个笔名,换汤不换药。
2、变量的作用域
变量需要在有效范围内使用,超出范围则变量将没有意义。
局部变量 | 在函数内部定义的变量,只作用于当前函数 |
---|---|
全局变量 | 定义于所有函数以外的变量,作用于整个PHP文件,但是在用户自己定义的函数内部是不可以用的,如果希望在自己定义的函数内使用则需要使用global关键字声明 |
静态变量 | 能够在函数调用结束后依旧保留的变量,当再次回到其作用域时可以继续使用原来的值。一般的变量是在函数调用之后,存储数据值删除,所占空间释放,需要使用static关键字声明 |
注意:函数内部定义的变量,作用域是所在函数,如果在函数外赋值,则会认为是完全不同的一个变量。退出声明变量的函数时,该变量及相应的值会被清除
下面的例子用于比较局部变量和全局变量的区别
<?php
$example = “在…函数外”;//声明全局变量
function example(){
e
x
a
m
p
l
e
=
"
.
.
.
在
函
数
内
.
.
.
"
;
/
/
声
明
局
部
变
量
e
c
h
o
"
在
函
数
内
输
出
的
内
容
是
:
example = "...在函数内...";//声明局部变量 echo "在函数内输出的内容是:
example="...在函数内...";//声明局部变量echo"在函数内输出的内容是:example.
";//输出局部变量
}
example();//调用函数
echo “在函数外输出的内容是:$example.
”;//输出全局变量
?>
输出结果:
在函数内输出的内容是:...在函数内....
在函数外输出的内容是:在...函数外.
下面的例子用于比较静态变量和普通变量的区别
<?php
function zdy (){
static $message = 0;
$message+=1;
echo $message." ";
}
function zdy1(){
$message = 0;
$message+=1;
echo $message." ";
}
for ($i=0; $i < 10 ; $i++) {
# code...
zdy();
}
echo "<br>";
for ($i=0; $i < 10; $i++) {
# code...
zdy1();
}
echo "<br>";
?>
结果如下:
1 2 3 4 5 6 7 8 9 10
1 1 1 1 1 1 1 1 1 1
下面例子是关于全局变量在函数中调用的例子
<?php
$zy = "会看到";
$zyy = "不会看到";
function lxt(){
echo $zy."<br>";//这句将不会显示
global $zyy;
echo $zyy."<br>";//这句将会显示
}
lxt();
?>
结果如下:
不会看到
3、可变变量
一种独特的变量,允许动态的改变变量的名称。原理是变量的名称有另一个变量的值来确定,实现过程是在变量钱多加一个$符号。
<?php
$change_name = "trans";
$trans = "You can see me!";
echo $change_name;
echo "<br>";
echo $$change_name;
?>
输出结果:
trans
You can see me!
原理就是,执行$$change_name时
首先执行$change_name
得到的结果是$trans
。