static变量的一些疑惑
来源:互联网 发布:软件消除会议室回声 编辑:程序博客网 时间:2024/06/13 22:26
<?phpfunction test($name){static $_trace = array();$_trace[]=$name;var_dump($_trace);}for ($i=0; $i <3 ; $i++) { test($i);}?>
上面的函数,输出的结果是
array 0 => int 0
array 0 => int 0 1 => int 1
array 0 => int 0 1 => int 1 2 => int 2搜了下资料,说是定义static变量的这个动作之后执行一次,因为在第一次循环执行的时候已经定义了$_trace了,所以第二次循环的时候,再执行这句话,就不会在执行了
但是
<?phpfunction test($name){static $_trace = array();$_trace[]=$name;static $_trace = array(1,2);static $_trace = array(1,2,3); static $_trace = array(1,2,3,'aaa','aadd');var_dump($_trace);}for ($i=0; $i <3 ; $i++) { test($i);}?>按照我的理解来说,结果应该是和开始的函数是一样的,但是
array 0 => int 1 1 => int 2 2 => int 3 3 => string 'aaa' (length=3) 4 => string 'aadd' (length=4) 5 => int 0array 0 => int 1 1 => int 2 2 => int 3 3 => string 'aaa' (length=3) 4 => string 'aadd' (length=4) 5 => int 0 6 => int 1array 0 => int 1 1 => int 2 2 => int 3 3 => string 'aaa' (length=3) 4 => string 'aadd' (length=4) 5 => int 0 6 => int 1 7 => int 2可以看出,定义static的值在函数运行最初的时候就定义好了,然后再才是开始执行函数的动作,否则数组也不会是这样的顺序
然后,总共有四个定义static的语句,但是,最后输出出来的是最后一个的定义的值,那么,当php在遇到定义static变量是在执行之前先比较这条语句在之前定义的时候是不是以相同的语句执行的,如果是,就不执行这条语句,不然则重新定义静态变量,还是在程序执行之前,直接取出最后一条,然后只执行最后一条定义语句???
纠结......
0 0
- static变量的一些疑惑
- 变量初始化的疑惑
- 编译器的一些疑惑
- 关于NAT的一些疑惑
- 数据仓库生命周期的一些疑惑
- 总结一些常见的疑惑
- 数据库设计的一些疑惑
- 关于UWP的一些疑惑
- java语言的一些疑惑
- 关于Service的一些疑惑。
- 学习SPI的一些疑惑
- ASP.net下使用static变量的一些体会
- ASP.net下使用static变量的一些体会
- 关于static(静态)变量的一些理解
- 一些疑惑
- 递归函数中静态变量的疑惑
- android:layout_weight的一些疑惑的地方
- static 变量的声明
- windows、ubuntu、mac系统的安装
- 程序异常时通过dump文件记录下异常的详细信息
- 将字符串作为php代码进行处理
- kindeditor和jquery ui dialog一起使用时遇到的焦点和提交的问题
- C#实验九456合集
- static变量的一些疑惑
- AOP代理工具类
- OGG-01224 TCP/IP error 111 (Connection refused); retries exceeded.
- SQLite数据库查看工具
- touch事件
- SecureCRT中文显示乱码的解决方法
- DatePickerDialog添加确认和取消按钮
- iOS申请发布证书 和发布应用程序
- 第10周上机实践项目1——程序填充与阅读