首页 > 开发 > php > 正文

php 静态变量的本质?

2017-09-06 13:35:05  来源:网友分享

<?php

function testStatic() {static $val = 1;echo $val;$val++;

}

testStatic();   //output 1testStatic();   //output 2testStatic();   //output 3echo $val; //output nothingecho '<hr/>';function testStatic2() {    global $val2;    $val2++;    echo $val2;}testStatic2();   //output 1testStatic2();   //output 2testStatic2();   //output 3echo $val2; //3echo '<hr/>';

?>

网上查了很多资料,感觉都没讲到根本.只是手册中提到过引用一词但也并无详述.此代码的对比也只是表达我个人的理解.个人对静态变量的理解是:静态局部变量与global极为相似,都是代表引用,只不过被引用的变量不可访问而已!而此代码static $val=1代表第一次函数执行时同时创建
局部变量$val和静态区的变量$val,局部$val引用静态区的$val,并且静态区$val赋初值为1,后续每次调用函数,就创建新的局部$val并直接引用静态区$val,不赋初值,但是不能在函数外面访问静态区的$val 问题就是静态局部变量是这么回事吗?

解决方案

引用s7634800的图 在作用域范围内的静态变量常驻内存,在多次调用的时候静态变量不会被重置