[面试常问总结] PHP变量范围-global/static
一般情况下,在函数内定义的变量只能在函数内生效 , 函数执行结束就销毁
函数内使用global关键字 , 函数内变量的引用会指向其全局版本 , 可以读取到外部变量 , 也能直接修改外部变量
function testGlobal(){ global $b; $b=2; } testGlobal(); var_dump($b);
输出 2
函数内使用static关键字 , 函数第一次调用时 , 变量被初始化 , 函数结束后 , 该变量不会被销毁 , 下次再调该函数时 , 此静态变量还会存在
<?php function test() { static $a=0; echo $a."\n"; $a++; } test(); test(); test();
输出:
0 1 2
因为global和static是通过引用实现的 , 如果再赋值给引用 , 就会不可预期
function testGlobalRef(){ global $c; $d=1; $c=&$d; } testGlobalRef(); var_dump($c);
输出 null
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网