您好,匿名用户
随意问技术百科期待您的加入

php中静态变量的疑问

0 投票

为什么这样的输出结果都是ccc?

<?php
static $arr = 'aaa';
var_dump($arr);
static $arr = 'ccc';
var_dump($arr);

但是这样却改变不了数组?

<?php
static $arr = array();
$arr[] = 'sdsds';
$arr[] = 'xxx';
var_dump($arr);
static $arr = array();
var_dump($arr);

而这样会给数组新增元素?

static $arr = array();
$arr[] = 'sdsds';
$arr[] = 'xxx';
var_dump($arr);
static $arr = array('ww', 'vv');
var_dump($arr);

希望能讲下原理 :)

用户头像 提问 2012年 12月1日 @ Archer 上等兵 (494 威望)
分享到:

1个回答

0 投票
 
最佳答案

static一般是用在function或者class里的, 这种用法比较少见
我认为,php引擎在扫到static的时候,会把静态声明的提到域的顶端

<?php
static $arr = 'aaa';
var_dump($arr);
static $arr = 'ccc';
var_dump($arr);

也就变成了

<?php
static $arr = 'aaa';
static $arr = 'ccc'; // 所以两个输出都是"ccc"
var_dump($arr);
var_dump($arr);

下一个演变成了

<?php
static $arr = array();
static $arr = array();
$arr[] = 'sdsds';
$arr[] = 'xxx';
var_dump($arr);
var_dump($arr);  // 所以两个都是 [ "sdsda", "xxx" ]

第三个演变成了

<?php
static $arr = array();
static $arr = array('ww', 'vv');
$arr[] = 'sdsds';
$arr[] = 'xxx';
var_dump($arr);  
var_dump($arr); //两个结果都是 ["ww","vv","sdsds","xxx"]
用户头像 回复 2012年 12月1日 @ Fiora 上等兵 (297 威望)
选中 2012年 12月1日 @Archer
提一个问题:

相关问题

0 投票
1 回复 36 阅读
0 投票
1 回复 2 阅读
用户头像 提问 2014年 6月2日 @ Wukong 上等兵 (475 威望)
0 投票
1 回复 38 阅读
+2 投票
1 回复 42 阅读
用户头像 提问 2013年 1月11日 @ hadoop 上等兵 (109 威望)
0 投票
1 回复 32 阅读
用户头像 提问 2012年 12月1日 @ Leona 上等兵 (279 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...