本文主要和大家分享php的傳值和引用講解,主要以文字的形式和大家分享,希望能幫助大家。
介紹:
每個php變數存在一個叫做
"zval"
的變數容器中。一個zval
變數容器,除了包含變數的類型和值,還包括兩個位元組
的額外資訊。第一個是"is_ref"
,是個bool值
,用來識別這個變數是否是屬於引用集合
(referenceset)。透過這個位元組,php引擎才能把普通變數和引用變數區分開來,由於php允許使用者透過使用&來使用自訂引用,zval變數容器中還有一個內部引用計數機制
,來優化記憶體使用。第二個位元組是"refcount"
,用以表示指向
這個zval變數容器的變數(也稱為符號即symbol)個數。當"refcount"
的值是1
時,」is_ref」的值總是FALSE
.
範例:
<?php$a = 10; //将常量值赋给变量,会为a分配内存空间$b = $a; //变量赋值给变量,给b分配了内存空间,并将a变量的类型和值复制一份存储到b的存储空间 $c = &$a; //引用是不会为c分配空间的,c和a是共用一份内存空间数据。
PHP中將一個變數賦值給新變數時,不會立即為新變數分配記憶體空間,只是增加了對記憶體空間的引用。當原變數或新變數作出任何變更時,才會為新變數 分配一塊記憶體空間。
相關推薦:
以上是php的傳值與引用講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!