PHP函数相关 --- 全局变量和局部变量

1、引用传值


      此时实参传递的不是值,而是传递的是实参指向的地址;

[php]  view plain  copy
  1. <?php  
  2.   
  3.     $a = 18;  
  4.       
  5.     function aaa(&$num){    //  注意,此时的参数前有个 “&” 符号,是地址符号,传递的则不是参数对应的值,二是参数指向的地址了;   
  6.           
  7.       return  $num += 1;  
  8.     }  
  9.       
  10.     echo $a;             //18          未调用函数时候,直接输出原值;  
  11.       
  12.     echo aaa($a);        //19          调用函数,将$a的地址传递过来,然后执行函数体内语句,返回;  
  13.       
  14.     echo $a;             //19          由于$a指向的地址中的内容,发生了变化,所以被函数调用用,$a也发生了变化;  
  15.   
  16. ?>  


2、global关键字:


    global关键字用在变量前,即声明:此变量用的是,代表的是全局变量(在函数内部使用);

[php]  view plain  copy
  1. <?php  
  2.   
  3.     $gg = 28;  
  4.       
  5.     function bbb(){  
  6.           
  7.         global $gg;                  // 注意: 此时 “global” 关键词,用在变量名前,声明这个变量用的是“全局范围”内的$gg;  
  8.           
  9.         return $gg -= 2;  
  10.     }  
  11.       
  12.     echo $gg;            // 28 ;       函数未被调用时候,直接原值原样输出;  
  13.       
  14.     echo bbb();         // 26;         函数被调用,执行函数体内语句,有关键词global声明在变量前,说明此时的变量用的(代表的)是全局变量;  
  15.   
  16.     echo $gg;          //  26;         由于函数执行的时候用的是全局变量,所以全局变量$gg 也跟着发生了变化;  
  17.   
  18. ?>  


3、超全局变量:


    (1)、超全局变量在脚本中,任何一个地方都能被访问使用,任意一层函数,任意一个角落;

    (2)、超全局变量主要有$GLOBALS、$_GET、$_POST.......都是以数组的形式展现;

[php]  view plain  copy
  1. <?php  
  2.   
  3.      $a = 23;  
  4.        
  5.      $b = 55;  
  6.        
  7.      print_r($GLOBALS);  
  8.   
  9. ?>       

上述代码执行,打印结果有一部分为:  [a] => 23;   [b] => 55; 即:$GLOBALS变量中,存储了页面内的所有的全局变量;变量名($a,$b)为

全局变量 变量名($a,$b)为超全局变量$GLOBAL中的健名([a],[b]);

[php]  view plain  copy
  1. <?php  
  2.   
  3.      $a = 23;  
  4.        
  5.      $b = 55;  
  6.        
  7.      function ccc(){  
  8.            
  9.          $GLOBALS['a'] += 2;  
  10.                              //  注意:此时没有函数内的$a;即return $a; 的时候会报错,此时的返回return的$a,应该是函数内部的$a,压根都没有进行声明都直接突然返回了(所以会报错),而上一句则是执行的超全局变量,改变的是函数外的全局变量$a;  
  11.      }  
  12.        
  13.        
  14.      echo $a;   //23  
  15.    
  16.      echo ccc();   //  此时没有返回值,函数内只运用、执行、改变了超全局变量;  
  17.   
  18.      echo $a;   //25   超全局变量,即变的就是其自身,只不过在函数体内部执行了改变了;  
  19.   
  20. ?>  


4、注意:常量一旦被声明后,也能在函数内,脚本中的任何一个位置被引用;

猜你喜欢

转载自blog.csdn.net/Strugglin/article/details/80220966