1、引用传值
此时实参传递的不是值,而是传递的是实参指向的地址;
- <?php
- $a = 18;
- function aaa(&$num){ // 注意,此时的参数前有个 “&” 符号,是地址符号,传递的则不是参数对应的值,二是参数指向的地址了;
- return $num += 1;
- }
- echo $a; //18 未调用函数时候,直接输出原值;
- echo aaa($a); //19 调用函数,将$a的地址传递过来,然后执行函数体内语句,返回;
- echo $a; //19 由于$a指向的地址中的内容,发生了变化,所以被函数调用用,$a也发生了变化;
- ?>
global关键字用在变量前,即声明:此变量用的是,代表的是全局变量(在函数内部使用);
- <?php
- $gg = 28;
- function bbb(){
- global $gg; // 注意: 此时 “global” 关键词,用在变量名前,声明这个变量用的是“全局范围”内的$gg;
- return $gg -= 2;
- }
- echo $gg; // 28 ; 函数未被调用时候,直接原值原样输出;
- echo bbb(); // 26; 函数被调用,执行函数体内语句,有关键词global声明在变量前,说明此时的变量用的(代表的)是全局变量;
- echo $gg; // 26; 由于函数执行的时候用的是全局变量,所以全局变量$gg 也跟着发生了变化;
- ?>
(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、注意:常量一旦被声明后,也能在函数内,脚本中的任何一个位置被引用;