學習需要知其然而知其所以然,PHP底層相關就是這類知識。
推薦:《PHP培訓》
今天來講講關於強制分裂的知識,簡單來說,強制分裂就是」在引用變數主動賦值前,該變數傳值賦值過,就會發生強制分裂。」
話說起來比較繞,看下程式碼解析吧。
看下面的程式碼:
稍微熟悉PHP:&引用符號都應該可以看出,output分別為gzchen,傍晚八點半,gzchen 。
那我們來看看以上程式碼的底層運行流程吧。
眾所周知,一個變數就是一個結構體,長成下面這樣:
每一行都寫了註釋,此檔案在zend.h在PHP源碼Zend的目錄下。
當程式碼運行到line:3[$name = '傍晚八點半']的時候,記憶體中的結構體長這樣:
當程式碼運行到line:4[name]的時候,結構體變成這樣:
#運行到line:5[##Misplaced &<span style="font-size: 14px; line-height: 1.76em;"></span>
name]和line:[$nameCopy = 'gzchen'],是這樣:
寫時複製(cow)一起考。
更多程式相關內容,請關注php中文網程式入門欄位!
以上是PHP底層分析之關於強制分裂的詳細內容。更多資訊請關注PHP中文網其他相關文章!