<?phpstatic $arr = 'aaa';var_dump($arr);static $arr = 'ccc';var_dump($arr);但是這樣卻改變不了數(shù)組?<?phpstatic $arr = array();$arr[] = 'sdsds';$arr[] = 'xxx';var_dump($arr);static $arr = array();var_dump($arr);而這樣會(huì)給數(shù)組新增元素?static $arr = array();$arr[] = 'sdsds';$arr[] = 'xxx';var_dump($arr);static $arr = array('ww', 'vv');var_dump($arr);
3 回答

海綿寶寶撒
TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
static一般是用在function或者class里的, 這種用法比較少見
我認(rèn)為,php引擎在掃到static的時(shí)候,會(huì)把靜態(tài)聲明的提到域的頂端
<?phpstatic $arr = 'aaa';var_dump($arr);static $arr = 'ccc';var_dump($arr);
也就變成了
<?phpstatic $arr = 'aaa';static $arr = 'ccc'; // 所以兩個(gè)輸出都是"ccc"var_dump($arr);var_dump($arr);
下一個(gè)演變成了
<?phpstatic $arr = array();static $arr = array();$arr[] = 'sdsds';$arr[] = 'xxx';var_dump($arr);var_dump($arr); // 所以兩個(gè)都是 [ "sdsda", "xxx" ]
第三個(gè)演變成了
<?phpstatic $arr = array();static $arr = array('ww', 'vv');$arr[] = 'sdsds';$arr[] = 'xxx';var_dump($arr); var_dump($arr); //兩個(gè)結(jié)果都是 ["ww","vv","sdsds","xxx"]

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
靜態(tài)變量在執(zhí)行前就已經(jīng)初始化完了。不管初始化多少次,只有最后一次有用。不帶上static就可以賦值。
你的所有
static $xxx = xxx;
都只有最后一句有用。
下面的代碼應(yīng)該能幫你理清思路:
<?phpstatic $arr = array('1','2');if (1 == 0) { static $arr = array('gga','gaga'); }var_dump($arr);?>
結(jié)果是:
array (size=2) 0 => string 'gga' (length=3) 1 => string 'gaga' (length=4)

開滿天機(jī)
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
第二個(gè)的第二次定義數(shù)組時(shí)是空的,應(yīng)該是忽略。
你再把第一個(gè)的第二次定義改為'',看看結(jié)果。
- 3 回答
- 0 關(guān)注
- 162 瀏覽
添加回答
舉報(bào)
0/150
提交
取消