php函数相关(3):函数体中局部变量改变全局变量

1、引用传值


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

<?php

	$a = 18;
	
	function aaa(&$num){    //  注意,此时的参数前有个 “&” 符号,是地址符号,传递的则不是参数对应的值,二是参数指向的地址了; 
		
	  return  $num += 1;
	}
	
	echo $a;             //18          未调用函数时候,直接输出原值;
	
	echo aaa($a);        //19          调用函数,将$a的地址传递过来,然后执行函数体内语句,返回;
	
	echo $a;             //19          由于$a指向的地址中的内容,发生了变化,所以被函数调用用,$a也发生了变化;

?>


2、global关键字:


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

<?php

    $gg = 28;
	
	function bbb(){
		
		global $gg;                  // 注意: 此时 “global” 关键词,用在变量名前,声明这个变量用的是“全局范围”内的$gg;
		
		return $gg -= 2;
	}
	
	echo $gg;            // 28 ;       函数未被调用时候,直接原值原样输出;
	
	echo bbb();         // 26;         函数被调用,执行函数体内语句,有关键词global声明在变量前,说明此时的变量用的(代表的)是全局变量;

    echo $gg;          //  26;         由于函数执行的时候用的是全局变量,所以全局变量$gg 也跟着发生了变化;

?>


3、超全局变量:


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

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

<?php

     $a = 23;
     
	 $b = 55;
	 
	 print_r($GLOBALS);

?>     

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

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

<?php

     $a = 23;
     
	 $b = 55;
	 
	 function ccc(){
		 
		 $GLOBALS['a'] += 2;
		                     //  注意:此时没有函数内的$a;即return $a; 的时候会报错,此时的返回return的$a,应该是函数内部的$a,压根都没有进行声明都直接突然返回了(所以会报错),而上一句则是执行的超全局变量,改变的是函数外的全局变量$a;
	 }
	 
	 
	 echo $a;   //23
 
     echo ccc();   //  此时没有返回值,函数内只运用、执行、改变了超全局变量;

     echo $a;   //25   超全局变量,即变的就是其自身,只不过在函数体内部执行了改变了;

?>


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



猜你喜欢

转载自blog.csdn.net/prdslf001001/article/details/78604785
今日推荐