1. 程式人生 > >如何深入理解php中的值傳遞和引用傳遞

如何深入理解php中的值傳遞和引用傳遞

對於值傳遞和引用傳遞,書本上的解釋比較繁瑣,而php面試中總會出現,下面我會通過一個生活的例子帶大家理解它們之間區別。

第一步 假設我們去酒店訂房間,我們把酒店的門牌號比作變數名,我們把房間裡住人數當做給這個變數名賦值的過程

​<?php

$k1=2;//$k1號房間住了2個人

$k2=$k1;//恰巧今天$k1號房間維修,把$k1號房間的人放到$k2房間裡面

$k1=10;//假設$k1維修好了,又住進10個人,那麼這就是值傳遞。

echo  "$k1號房間:".$k1."個人";//10

echo  "$k2號房間:".$k2."個人";//1

?>

值傳遞的特點

1 值相等 也就是$k1給$k2房間裡的人是相等的。

2相互獨立,互不影響 這就是說,我$k1房間來多少客人和$k2房間客人來多少客人是互相不影響的。這就叫:"道不同不相為謀"。

第二步 以上面為例 假設我們$k1這個房間被維修工掛上兩個門牌號$k1和$k2來理解

<?php

$k1=2;//$k1號房間住了2個人

$k2=&$k1;//恰巧今天$k1號房間掛上"$k1"和“$k2”兩個門牌號

$k1=10;//假設$k1又住進10個人,那麼這就是引用傳遞。

echo  "$k1號房間:".$k1."個人";//10

echo  "$k2號房間:".$k2."個人";//10因為門牌$k1房間的客人就是門牌$k2裡面的客人

?>

引用傳遞的特點

1相互影響 也就是說$k1中來多少客人,$k2就是顯示多少客人,這就叫"拴在一條繩上的螞蚱"

區別

1.使用上的區別

值傳遞的符號是=

引用傳遞符號是&

2意義上的區別

值傳遞是變數傳遞是互不影響的,而引用傳遞則是兩個變數指向同一空間相互影響的