最新消息:

PHP变量

PHP学习笔记 admin 1342浏览 0评论

一、变量赋值方式:传值赋值、引用赋值

PHP的变量用$跟一个变量名来表示,变量名是大小写敏感的。变量赋值有两种方式:传值赋值、引用赋值。

(1)传值赋值。传值赋值是将一个表达式的值赋予一个变量,使用=进行赋值。

这种赋值方式是将整个原始表达式的值传给目标变量。传值赋值方式将原变量的值赋予目标变量后,改变目标变量的值不会影响到原变量的值。 原变量和目标变量在存储系统中是相互独立的。传值赋值实际上在存储系统中执行了复制操作。

20130807162932

(2)引用赋值。引用赋值是新变量简单的引用了原变量,即新变量成为了原变量的别名,它们的值或内容在存储系统同一位置。

引用赋值后,改变新的变量将会影响到原变量,反之亦然。引用赋值的好处是赋值操作更加快速。引用赋值使用专门的操作符&,如$a=&$b.

20130807163530

ps:只有确定名字的变量才可以作为引用赋值的原变量,其他情况将发生错误。

20130807163739

ps:可变变量/动态变量。当一个变量的值是另一个变量的变量名时,这个变量称为可变变量或动态变量。20130807165938

ps:当对引用使用unset()函数时,只是断开了变量名和变量之间的绑定关系,并不意味者变量内容被销毁。

<?php
    $a = 1;
    $b =& $a;
    unset ($a);
    echo $b;  //$b可以继续使用,并没有被销毁
?>

 

二、变量的作用范围

变量的作用范围就是变量的生效范围。变量的作用范围分为全局范围和局部范围,即全局变量和局部变量。

若变量在用户自定义函数中定义,那么默认是局部变量,若要在函数内部使用全局变量可以用global来指定。global关键字的用处:1、使用global在用户定义函数内定义全局变量,使函数外也可使用该变量。2、在用户定义函数内使用global声明变量为全局变量,使在函数内使用函数外边的变量。总而言之,在函数中使用global $a声明一个变量$a时,如果已经存在全局变量$a,那么此处的意思是要在函数中使用该全局变量$a;如果不存在全局变量$a,那么此处的意思是定义一个全局变量,函数外部也可以使用该变量。

<?php
 $b=20;
 function test()
 {
 	global $a;
 	$a=1000;
 	global $b;
 	echo $b;
 }
 test();
 echo $a;
?>

当然,在函数内访问全局变量还有另外一个办法:使用PHP预定义变量$GLOBALS数组。$GLOBALS数组包含当前脚本全局范围内有效变量的引用,该数组元素的键名为全局变量的名称。

<?php
 $b=20;
 function test()
 {
 	echo $GLOBALS['b'];
 }
 test();
?>

三、变量的生存周期:静态变量

变量的生存周期是变量可供使用的时间段,即变量的寿命。变量在生存期内都是有效的,超过生存期变量就会失效。当变量失效后,变量就不再存在,也不能访问该变量的值了。

全局变量的生存周期是整个文件(当然包括include/require包含的文件)。而用户在函自定义函数内定义的变量,即局部变量,在函数结束时就会消失。如果,需要局部变量在每次函数执行完不消失,可以将局部变量定义为静态变量。定义静态变量的关键字是static。

ps:静态变量是局部变量,只能在函数内部使用。而静态变量在函数执行完并不消失,下次调用函数时还是使用的该变量。

<?php
 function test()
 {
 	static $a=0;
 	$a++;
 	echo $a.'<br />';
 }
 test();
 test();
?>

20130807210625

 

四、预定义变量

PHP除了预定义了一些常量,如PHP_OS、__FILE__等,还提供了大量的预定义变量。预定义变量,也叫系统变量,许多与定义变量依赖于运行的服务器版本和PHP配置文件的设置。

前面介绍的用于访问全局变量的$GLOBALS就是一个预定义变量。

20130807211153

这些预定义变量会在以后经常使用,需要铭记。

 

 

 

转载请注明:jinglingshu的博客 » PHP变量


Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in /usr/share/nginx/html/wp-content/themes/d8/comments.php on line 17
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 变量的传值方式:引用赋值、传值赋值 可变变量/动态变量。当一个变量的值是另一个变量的变量名时,这个变量称为可变变量或动态变量 变量的作用范围:全局变量、局部变量 (global $GLOBALS) 变量的生存周期:静态变量static 预定义变量
    admin8年前 (2013-09-02)回复