PHP深复制与浅复制
生活随笔
收集整理的這篇文章主要介紹了
PHP深复制与浅复制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PHP5使用了Zend引擎II,對象被儲存于獨立的結構Object Store中,而不像其它一般變量那樣儲存于Zval中(在PHP4中對象和一般變量一樣存儲于Zval)。在Zval中僅存儲對象的指針而不是內容(value)。當我們復制一個對象或者將一個對象當作參數傳遞給一個函數時,我們不需要復制數據。僅僅保持相同的對象指針并由另一個zval通知現在這個特定的對象指向的Object Store。由于對象本身位于Object Store,我們對它所作的任何改變將影響到所有持有該對象指針的zval結構----表現在程序中就是目標對象的任何改變都會影響到源對象。.這使PHP對象看起來就像總是通過引用(reference)來傳遞。所以以上的tv2和tv1其實是指向同一個電視機實例,我們對tv1或則tv2所做的操作其實都是針對這同一個實例。因此我們的“復制”失敗了。看來直接變量賦值的方式并不能拷貝對象,為此PHP5提供了一個專門用于復制對象的操作,也就是 clone 。這就是對象復制的由來。
總結
以上是生活随笔為你收集整理的PHP深复制与浅复制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微众银行we2000备用金怎么申请
- 下一篇: 二手房贷款评估费