PHP4和PHP5中的引用

2021-08-26 11:22:46 字數 1613 閱讀 5815

php提供了引用操作符(&),在php中引用的意思是用不同的名字訪問同乙個變數內容,php4和php5中的物件引用是有區別的。

$a = 8;

$b = $a;

echo '$a:' . $a; // 8

echo '$b:' . $b; // 8

$a = 12;

echo '$a:' . $a; // 12

echo '$b:' . $b; // 8

首先建立變數$a,把整數8賦值給$a,然後把$a賦給$b,這時候php建立乙個$a的副本,再把這個副本賦給$b,通俗點說就是記憶體中產生了兩個變數,變數的值都是8,這兩個變數乙個指向$a,乙個指向$b,所以列印結果$a和$b都是12,接著我們將12賦給$a,然後再列印$a和$b,可以看到$a的值變成12了,而$b的值還是8,這個很容易理解,因為$a和$b是兩個完全不相干的變數。

$a = 8;

$b &= $a;

echo '$a:' . $a; // 8

echo '$b:' . $b; // 8

$a = 12;

echo '$a:' . $a; // 12

echo '$b:' . $b; // 12

首先建立變數$a,把整數8賦值給$a,然後把$a賦給$b,注意是使用的&引用賦值,列印$a和$b,兩個變數的均為8;接著我們把12賦給$a,再列印$a和$b,可以看到$b的值也變成12了。php的引用操作符(&),可以不讓程式產生乙個副本,$a和$b指向同一塊記憶體區域,即$a和$b是同乙個變數,所以當$a的值發生變化時,$b的值也會跟著發生變化。這就好比『張三』,上學的時候同學們給取個綽號『三娃』,無論是『張三』還是『三娃』所指的都是那一百多斤,都是指的同乙個人。

在php4中,當你建立物件並將其賦值給其它變數時,php4總是會產生乙個該物件的副本,將整個物件及所有內容複製過去。php4的這種物件處理方式非常的糟糕,複製物件會讓程式占用更多的記憶體,複製物件往往還會引起一些莫名其妙的錯誤。這種糟糕的物件處理方式在php5中得到了改善,在php5中物件總是以引用的方式傳遞。

$user = new user();

$user->name = 'zhangsan';

$bing = $user;

$bing->name = 'bing.peng';

echo $user->name; // for php4: zhangsan for php5: bing.peng

在php4下執行上面的**,列印出來的是:『zhangsan』;在php5下列印結果為:『bing.peng』,可以看到php5預設就是使用引用賦值,注意php5只是物件型別預設使用引用賦值,基本型別還是會產生副本,那麼要在php5中複製物件,需要使用clone關鍵字來完成,如果想要在php4中得到同樣的效果,我們就需要使用引用操作符,**如下:

$user = new user();

$user->name = 'zhangsan';

$bing &= $user;

$bing->name = 'bing.peng';

echo $user->name;

公升級PHP5的理由 PHP4和PHP5效能對比

php 4到今年年底php group將不再對其進行支援了,所以為了讓大家更有信心的轉移到php 5平台上,我特別做了這個測試,看看我們php 4.x 是否真的效能比我們的php 5.x要好捏,測試結果很明顯,那就是php 5.x 比php 4.x不論是物件導向還是面向過程,都要比php 4.x 要...

PHP4和PHP5效能測試和對比

php4和php5效能測試和對比 php 4到今年年底php group將不再對其進行支援了,所以為了讓大家更有信心的轉移到php 5平台上,我特別做了這個測試,看看我們php 4.x 是否真的效能比我們的php 5.x要好捏,測試結果很明顯,那就是php 5.x 比php 4.x不論是物件導向還是...

PHP4和PHP5效能測試和對比

php4和php5效能測試和對比http blog.csdn.net heiyeshuwu php 4到今年年底php group將不再對其進行支援了,所以為了讓大家更有信心的轉移到php 5平台上,我特別做了這個測試,看看我們php 4.x 是否真的效能比我們的php 5.x要好捏,測試結果很明顯...