php函数引用函数,php函数引用调用问题

function &test(){

static $b = 1;

$b += 2;

return $b;

}

$a = &test();

$a =8;

$c = &test(); // 这里再次调用test() 函数,为什么不再执行static $b = 1;这个语句。因为结果表明此时$c=10.

// 如果将static去掉,结果是3. 这个怎么解释?谢谢!

echo $c;

回复讨论(解决方案)

static修饰了变量$b,那么它就是一直存在的,去掉static,那么每次调用都会初始化一次

因为$a = &test();(加了&,地址传递)所以$a被改变,那么静态变量$b的值也被改变,所以在执行$c = &test();时,此时$b的值是8,返回10

static修饰了变量$b,那么它就是一直存在的,去掉static,那么每次调用都会初始化一次

因为$a = &test();(加了&,地址传递)所以$a被改变,那么静态变量$b的值也被改变,所以在执行$c = &test();时,此时$b的值是8,返回10

把语句改成

function &test() {

static $b = 1;

static $b = 100;

static $b = 1000;

// $b = 1000;

$b += 2;

return $b;

} 又测试了下,原来静态存在的不能再用静态方式去修改它。但是又不报错,有点受不了,呵呵~。

静态变量只在声明时赋初值,静态变量具有全局变量的性质,只是作用域不同

静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中。一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。就是说,下次再调用这个函数的时候,该变量的值会保留下来。

静态变量只在声明时赋初值,静态变量具有全局变量的性质,只是作用域不同 +1 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值