为了账号安全,请及时绑定邮箱和手机立即绑定

php 静态变量的本质?

php 静态变量的本质?

PHP
回首忆惘然 2019-03-18 18:09:54
<?php function testStatic() { static $val = 1; echo $val; $val++; } testStatic(); //output 1 testStatic(); //output 2 testStatic(); //output 3 echo $val; //output nothing echo '<hr/>'; function testStatic2() { global $val2; $val2++; echo $val2; } testStatic2(); //output 1 testStatic2(); //output 2 testStatic2(); //output 3 echo $val2; //3 echo '<hr/>'; ?> 网上查了很多资料,感觉都没讲到根本.只是手册中提到过引用一词但也并无详述.此代码的对比也只是表达我个人的理解.个人对静态变量的理解是:静态局部变量与global极为相似,都是代表引用,只不过被引用的变量不可访问而已!而此代码static $val=1代表第一次函数执行时同时创建局部变量$val和静态区的变量$val,局部$val引用静态区的$val,并且静态区$val赋初值为1,后续每次调用函数,就创建新的局部$val并直接引用静态区$val,不赋初值,但是不能在函数外面访问静态区的$val 问题就是静态局部变量是这么回事吗?
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

 https://img2.sycdn.imooc.com/5c8f6e710001cac808000587.jpg 在作用域范围内的静态变量常驻内存,在多次调用的时候静态变量不会被重置

查看完整回答
反对 回复 2019-03-18
?
浮云间

TA贡献1829条经验 获得超4个赞

楼上的图片解释的很到位了,你只需要记着:静态变量会保存上一次执行的结果,而普通变量多次执行会被覆盖即可。

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 394 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信