本文共 859 字,大约阅读时间需要 2 分钟。
$var1 = 'zhuchunyu';$var2 = "";function foo($vaa){ global $var1,$var2; if (!$vaa){ $var2 = & $var1; } else{ $GLOBALS["var2"] = & $var1; }}foo(false);print "var2------->".$var2."\n"; // $var2是空字符串foo(true);print "var2------->".$var2."\n"; // $var2是zhuchunyu// 解析打印效果
function &foo(){ static $b=0; // 申明一个静态变量 $b = $b +1; echo $b; return $b;}$a = foo(); $a = 5; $a = foo(); $a = &foo();$a = 5;$a = foo();// 解释下 $a = foo() , $a = $foo()对于上面的foo函数中的static,指定一个静态变量,当执行一次函数,static设置的变量,是不会消失的。$a = foo() 它是将函数的返回值的值赋值给$a,$a = $foo() 它是将函数的返回值的内存地址赋值给$a,一旦$a改变了值,那么函数的返回值也会改变,foo函数的返回值就是static静态变量,所以函数的返回值改变,这个静态变量也会改变。// 打印效果1236
$a = 1;$b = &$a;unset($a);print $b; // 输出1// 解析下unset删除一个变量,它只是删除了变量与值的内存地址之间的关系,不会删掉值,所以你虽然删除了$a,但是值没有删掉,所以$b对应的值还是1。
转载于:https://www.cnblogs.com/zhuchunyu/p/10648684.html