您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
2-7 自定义函数及内部函数考察点(下)
发布时间:2020-10-03 10:47:53编辑:雪饮阅读()
引用方法的引用调用
有如下程序:
<?php
function myDump($val){
echo "<pre>";
print_r($val);
echo "</pre>";
}
function &mgFunc(){
static $b=10;
return $b;
}
$a=mgFunc();
myDump($a);
$a=&mgFunc();
$a=100;
myDump(mgFunc());
这里mgFunc用&声明了其是引用函数,而调用时候首先用变量a接收mgFunc的正常调用结果即变量b的值后a的值为0,那么此时第一次输出结果为0。第二次引用调用,那么此时变量a的结果还是赋予原来的10值,但同时变量a和方法内部的静态变量b已经建立了引用关系。接下来变量a被赋值100,而由于其已经和静态变量b产生了引用关系,所以此时静态变量b的值也就是100了,那么最后的输出结果同样是100.
那么我们的运行结果如:
10
100
Global
有如下一段程序:
<?php
function myDump($val){
echo "<pre>";
print_r($val);
echo "</pre>";
}
$var1=5;
$var2=10;
function foo(&$my_var){
global $var1;
$var1+=2;
$var2=4;
$my_var+=3;
return $var2;
}
$my_var=5;
myDump(foo($my_var));
myDump($my_var);
myDump($var1);
myDump($var2);
$bar='foo';
$my_var=10;
myDump($bar($my_var));
读程:
第一次输出myDump(foo($my_var));
此时传递了变量是多少无所谓,我们关系的是返回的是$var2,由于$var2在方法体内部重新定义了,其值为4,那么这次输出自然是4.
接下来我们需要关心的是传递的这个参数我们传递的参数是my_var是5,当方法接收后该变量被自加了3(引用传参)那么结果是8,另外var1变量在方法内部用global声明则并且自加为2,所以全局的var1变量的结果是7.
第二次输出仅仅输出变量my_var而第一次输出时此值已经是8了。
第三次输出仅仅输出变量var1(全局)而第一次输出时此值已经是7了。
第四次输出的变量是var2,而这里调用的是全局的变量,而全局变量var2目前就没有操作过就是一开始定义的10.
第五次输出仅仅是动态调用了foo函数,那么和第一次输出就没有什么区别了,同样是输出foo中的局部变量var2,则输出为4.
那么运行结果:
4
8
7
10
4
关键字词:引用,静态,动态,global,static,php
下一篇:2-8 正则表达式考察点