1.变量的概念
变量时指在程序运行过程中值可以改变的量。变量的作业就是存储数值。一个变量具有一个地址,这个地址存储变量的数值信息。
2.定义和使用变量
变量的名称由一个美元符号“$”和其后面的字符组成,字符是区分大小写的。一个有效的变量名由字母或下划线“_”开通,后面跟任意数量的字母、数字或下划线。
2.1.变量的命名
声明的变量不可以与已有的变量重名,否则将引起冲突。变量的名称应采用能反映含义的名称,以利于提高程序的可读性。如"$ book_name"。必要时,也可以将变量的类型包含在变量名中,如"$book_id_int",这样可以根据变量名称了解变量类型。
3.变量的赋值方式
3.1.直接赋值
直接赋值就是使用“=”直接将值赋值给某变量,也称变量的初始化。例如
$age=30;
3.2.传值赋值
传值赋值就是使用“=”将一个变量的值赋值给另外一个变量。例如
$a=10;
$b=$a;
3.3.引用赋值
引用赋值是指一个变量引用到另一个变量的值。例如
$a=10;
$b=&$a;
3.4.引用赋值和传值赋值的区别
传值赋值是直接将一个变量的值赋值给另一个变量,而引用赋值是将一个变量存储值的位置指向另外一个变量的存储位置。例如
<?php
$a=10; //定义变量a,初始化值为10
$b=$a; //定义变量b,采用传值赋值方式指向a
$c=&$a; //定义变量c,采用引用赋值的方式指向a
echo '$a='.$a.' $b='.$b.' $c='.$c."<br>"; //输出变量a,b,c各自的值
$a=20; //直接赋值变量a值为20
echo '$a='.$a.' $b='.$b.' $c='.$c; //输出变量a,b,c各自的值
?>
可以发现,当变量$a的值被改变后,传值赋值方式下的变量 $b却没有和变量 $a的值相同,反而引用赋值下变量 $c的值与变量 $a的值相同。
4.可变变量
可变变量是一种独特的变量,变量的名称并不是预先定义好的,而是动态地设置和使用。动态变量一般是指使用一个变量的值作为另一个变量的名称,所以可变变量又称为变量的变量,可变变量通过在一个变量名称前使用两个“$$”符号实现。例如
<?php
$change_name="php";
$php="编程的关键因素在于学好语言基础";
echo $change_name; //输出变量change_name的值,即输出"php"
echo $$change_name; //输出变量$PHP的值,即输出"编程的关键因素在于学好语言基础"
?>
5.PHP预定义变量
变量的名称 | 说明 |
---|---|
$_SERVER[‘SERVER_PORT’] | 服务器所使用的端口,默认为80,如果使用SSl安全连接,则这个值为用户设置的HTTP端口 |
$_SERVER[‘SERVER_SIGNATURE’] | 包含服务器版本和虚拟主机名的字符串 |
$_SERVER[‘DOCUMENT_ROOT’] | 当前运行脚本所在的文档根目录。在服务器配置文件中定义 |
$_COOKIE | 通过 HTTP Cookies 方式传递给当前脚本的变量的数组。这些Cookie多数是由执行PHP脚本时通过setCookies()函数设置的 |
$_SESSION | 包含与所有会话变量有关的信息,$_SESSION 变量主要应用于会话控制和页面之间值的传递 |
$_POST | 包含通过POST方法传递的参数的相关信息,主要用于获取通过POST方法提交的数据 |
$_GET | 包含通过GET方法传递的参数的相关信息,主要用于获取通过GET方法提交的数据 |
$GLOBALS | 由所有已定义全局变量组成的数组。变量名就是该数组的索引。它可以称的上就是所有超级变量的超级集合。 |
6.变量的作用域
变量的使用范围,也叫做变量的作用域。从技术上来讲,作用域就是变量定义的上下文的有效范围。根据变量使用范围的不同,可以把变量分为局部变量、全局变量和静态变量。
6.1.局部变量
局部变量只是在程序的局部有效,它的作用域分为两种。
- 在当前文件主程序中定义的变量,其作用域限于当前文件的主程序,不能再其他文件或当前文件的局部函数中起作用。
- 在局部函数或方法中定义的变量仅限于局部函数或方法,在文件的主程序、其他函数、其他文件中无法引用。
下面的程序代码说明了其含义和作用:
<?php
$my_var = "good"; //$my_var的作用域仅限域当前的主程序
function my_fun(){
$local_val = 1234; //$local_var的作用域仅限域当前的函数
echo '$local_var='.$local_val."<br>"; //调用函数时输出结果为1234
echo '$my_var='.$my_var."<br>"; //调用函数时输出结果值为空
}
my_fun();
echo '$local_var='.$local_val."<br>"; //输出结果值为空
echo '$my_var='.$my_var."<br>"; //输出结果值为“good”
?>
6.2.全局变量
与局部变量相反,全局变量可以在程序的任何地方访问,但是在用户自定义函数内部时不可用的。若想在用户自定义函数内部使用全局变量,只需要在变量前面加上关键字global声明。
下面程序的代码说明了其含义和作用:
<?php
$my_global = 1; //定义变量my_global
function my_fun1(){ //函数my_fun1()
global $my_global; //声明$my_global为全局变量
global $two_global; //声明$tow_global 为全局变量
echo 'my_global='.$my_global."<br>"; //调用该函数时输出结果值为1
$two_global = 2; //将全局变量$two_global赋值为2
}
function my_fun2(){ //函数my_fun2()
global $two_global; //声明$two_global为全局变量
echo '$two_global='.$two_global."<br/>"; //调用该函数时输出结果值为2
$two_global = 3;
}
my_fun1(); //调用函数my_fun1()
my_fun2(); //调用函数my_fun2()
echo $two_global;
?>
6.3.静态变量
通过局部变量的定义可以知道,在函数内部定义的变量,在函数调用结束后,其变量将会失效。但有时仍然需要该函数内的变量有效,此时就需要将变量声明为静态变量。声明静态变量只需要在变量前加static关键字即可。
下面的程序代码说明了其含义和作用:
<?php
function fun1(){
static $a = 10; //定义静态变量
$a+=1;
echo "静态变量a的值为:".$a."<br>";
}
function fun2(){
$b = 10; //定义局部变量
$b+=1;
echo "局部变量b的值为".$b."<br>";
}
fun1(); //第1次调用函数fun1(),输出结果值:11
fun1(); //第2次调用函数fun1(),输出结果值:12
fun1(); //第3次调用函数fun1(),输出结果值:13
fun2(); //第1次调用函数fun2(),输出结果值:11
fun2(); //第2次调用函数fun2(),输出结果值:11
fun2(); //第3次调用函数fun2(),输出结果值:11
?>
1.文章引用教材的大部分内容,非全部本人原创
2.预定义变量的相关信息可以查看链接 https://www.php.cn/php-weizijiaocheng-361065.html
转载:https://blog.csdn.net/weixin_44356002/article/details/105531594