亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這樣的輸出結果都是ccc?希望能講下原理

為什么這樣的輸出結果都是ccc?希望能講下原理

PHP
MMTTMM 2023-04-15 14:10:06
<?phpstatic $arr = 'aaa';var_dump($arr);static $arr = 'ccc';var_dump($arr);但是這樣卻改變不了數組?<?phpstatic $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);
查看完整描述

3 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

static一般是用在function或者class里的, 這種用法比較少見
我認為,php引擎在掃到static的時候,會把靜態聲明的提到域的頂端

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

也就變成了

<?phpstatic $arr = 'aaa';static $arr = 'ccc'; // 所以兩個輸出都是"ccc"var_dump($arr);var_dump($arr);

下一個演變成了

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

第三個演變成了

<?phpstatic $arr = array();static $arr = array('ww', 'vv');$arr[] = 'sdsds';$arr[] = 'xxx';var_dump($arr);  
var_dump($arr); //兩個結果都是 ["ww","vv","sdsds","xxx"]


查看完整回答
反對 回復 2023-04-18
?
DIEA

TA貢獻1820條經驗 獲得超2個贊

靜態變量在執行前就已經初始化完了。不管初始化多少次,只有最后一次有用。不帶上static就可以賦值。
你的所有

static $xxx = xxx;

都只有最后一句有用。

下面的代碼應該能幫你理清思路:

<?phpstatic $arr = array('1','2');if (1 == 0) {	static $arr = array('gga','gaga');
}var_dump($arr);?>

結果是:

array (size=2)
  0 => string 'gga' (length=3)
  1 => string 'gaga' (length=4)


查看完整回答
反對 回復 2023-04-18
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

第二個的第二次定義數組時是空的,應該是忽略。
你再把第一個的第二次定義改為'',看看結果。

查看完整回答
反對 回復 2023-04-18
  • 3 回答
  • 0 關注
  • 147 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號