好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php中变量作用域和超级全局变量介绍 - php高级应

php中变量作用域和超级全局变量介绍

一、变量的赋值

变量声明后就可以给其赋值,有两种方式:值赋值和引用赋值。 

1、值赋值 

$color = "red" ; 

$sum = 12+"15" ; /* $sum = 27 */

2、若希望两个变量指向一个值的同一个副本,则需要通过引用赋值.

引用赋值 

所创建的变量与另一个变量引用的内容相同,如果多个变量引用了同一个内容,修改其中任意一个变量,在其余的变量上都将有所反映.

PHP实例代码如下:

<?php   $value1  =  "hello"  ;   $value2  = &value1 ;  /*$value1 and $value2 both equal "hello" .*/    $value2  =  "goodbye"  ;  /*$value1 and $value2 both equeal "goodbye". */    ?> 

二、变量的作用域 

php脚本的任何位置都可以声明变量,但声明变量的位置会大大影响访问变量的范围,这个可访问的范围称为作用域(scope).

php变量的4中作用域:

△ 局部变量 

△ 函数参数 

△ 全局变量 

△ 静态变量 

1、局部变量 

在函数中声明的变量认为是局部变量,只能在函数中引用,退出声明变量的函数时,该变量及相应的值就会撤销,消除了导致全局访问的变量被有意或无意修改的可能性.

$x  = 4 ;   function  assignx ( ) {   $x  = 0 ;   print  "$x inside function is $x . <br>"  ;   }   assignx ( ) ;   print  "$x outside of function is $x . <br>"  ; 

代码的执行结果为:

$x inside function is 0 . 

$x outside function is 4 .

2、函数参数 

php和其他编程语言一样,任何接受参数的函数都必须在函数首部中声明这些参数,虽然这些参数接受函数外部的值,但退出函数后就无法再访问这些参数.(按引用传递的参数除外)

例如:

function  x10 (  $value  ) {   $value  =  $value  * 10 ;   return   $value  ;   } 

函数执行完毕,参数即将撤销.

3、全局变量 

与局部变量相反,全局变量可以在程序的任何位置访问,当在函数中改变全局变量时,需要在该函数中将变量显示地生命为全局变量,只要在函数中的该变量前加上global即可.

例如:

$somevar  = 15 ;   function  addit ( ) {   global   $somevar  ;   $somevar  ++ ;   print  "somevar is $somevar"  ;   }   addit ( ) ;  

$somevar 显示的值应为16,但是,若去掉 global $somevar ; 这行,变量$somevar 将被隐含的设置为0,再加1,最后显示的值就是1.

声明全局变量的另一方法是使用php的$global数组,如下:

$somevar = 15 ;   function  addit ( ) {   $globals[  'somevar'  ]++ ;   }   addit ( ) ;   print  "somevar is " . $globals[  'somevar'  ] ;   //返回值如下: somevar is 16 .  

4、静态变量 

静态(static)作用域,普通变量的函数参数在函数结束时会撤销,但静态变量在函数退出时不会丢失值,并且再次调用此函数时还能保留这个值,在汴梁明前加上关键字 static 就可以声明一个静态变量.

static $somevar ; 

考虑一个例子:

function  keep_track ( ) {   static   $count  = 0 ;   $count  ++ ;   print  $count  ;   print  "<br>"  ;   }   keep_track ( ) ;   keep_track ( ) ;   keep_track ( ) ;   keep_track ( ) ;  

若$count 没有被指明为静态(相应的,$count就是一个局部变量),输出将会是 

因为$count是静态的,它会在每次执行函数时保留前面的值,输出如下:

静态作用域对于递归函数很有用,递归函数(recursive function)是一个功能强大的编程概念,它是一个可以重复调用自身的函数,直到满足某个条件为止.

5、 php的超级全局变量 

php提供了很多有用的预定义变量,可以在执行脚本的人和位置访问,用于提供大量与环境有关的信息,可以通过这些变量获得关于当前用户会话、用户操作系统环境和本地操作环境等详细信息,php会创建部分变量,而其他许多变量的可用性和值则取决于操作系统和web服务.

输出所有预定义变量:

foreach  (  $_server   as   $var  =>  $value  ) {   echo   "$var => $value <br>"  ;   }  

显示用户的ip地址:

print "hi!your ip address is ".$_server[ ' remote_addr' ] ;

查看更多关于php中变量作用域和超级全局变量介绍 - php高级应的详细内容...

  阅读:47次