liyeho 发表于 2017-4-1 09:00:20

PHP中变量的作用域

  1、超级变量($_POST,$__GET,$__GLOBAL,$__COOKIE,$__FILES,$__ENV,$REQUEST,$__SESSION)在脚本的任何地方可以直接使用。
  2、常量,被声明以后,可以供该声明后的所有位置使用。
  如:
  <?php
  function changeName(){
define ('Gooodd' ,22222);
echo 'you are a ='.Gooodd.'<br />';
}
changeName() ;
echo 'you are a ='.Gooodd;
  或
  

<?php
define ('Gooodd' ,22222);
function changeName(){

// global $var;
$var=10;
// define ('Gooodd' ,22222);
echo 'you are a ='.Gooodd.'<br />';
return $var;

}
$var=12;
//echo 'var='.$var.'<br />';
echo 'you are a ='.Gooodd.'<br />';
changeName() ;
// echo 'var='.$var;
echo 'you are a ='.Gooodd;

  

  3、在一个脚本中声明的变量(其实就是全局变量)是可以在该脚本该声明之后的语句中被使用,但是不能被函数中所使用(会被覆盖)。
  如
  

<?php
function changeName(){

// global $var;
$var=10;

echo 'var='.$var.'<br />';

return $var;

}


$var=12;
echo 'var='.$var.'<br />';

changeName() ;

echo 'var='.$var;

  

  输出的是:
  12
  10
  12
  4、如果要在函数内部使用函数外部的全局变量,那么要在函数内部中加global 关键字进行声明。
  如:
  

<?php
function changeName(){

global $var;
$var=10;

echo 'var='.$var.'<br />';

return $var;

}


$var=12;
echo 'var='.$var.'<br />';

changeName() ;

echo 'var='.$var;

  输出是:
  12
  10
  10
  5、在函数内部创建并被声明为静态的变量无法在函数外部可见, 但是可以在函数的多次执行过程中保持原来的数值。
  

  

<?php
function changeName(){

static $var=0;
++$var;


echo 'var='.$var.'<br/>';

return $var;

}


changeName() ;
changeName() ;
changeName() ;


  输出是:
  1
  2
  3
  6、函数内部创建的变量是局部的,当函数终止时,该变量被释放。
  7、因为包含文件像原来的脚本的一部分那样工作,所以在incLude()那一行之前定义的变量可供被包含文件使用,此外,包含文件内定义的变量可供include()那一行之后的脚本使用。
页: [1]
查看完整版本: PHP中变量的作用域