国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

通過5個php實例細(xì)致說明傳值與傳引用的區(qū)別

2024-05-04 23:14:25
字體:
供稿:網(wǎng)友
哈哈,會用只是初級階段,要了解原理是什么,這樣才能更好去運用,費話不多說
傳值:是把實參的值賦值給行參 ,那么對行參的修改,不會影響實參的值
傳引用 :真正的以地址的方式傳遞參數(shù)傳遞以后,行參和實參都是同一個對象,只是他們名字不同而已對行參的修改將影響實參的值
說明:
傳值:根copy是一樣的。打個比方,我有一橦房子,我給你建筑材料,你建了一個根我的房子一模一樣的房子,你在你的房子做什么事都不會影響到我,我在我的房子里做什么事也不會影響到你,彼此獨立。
傳引用:讓我想起了上大學(xué)時學(xué)習(xí)C語言的指針了,感覺差不多。打個比方,我有一橦房子,我給你一把鑰匙,我們二個都可以進(jìn)入這個房子,你在房子做什么都會影響到我。
一,php實例
1,傳值

復(fù)制代碼 代碼如下:


<?php
$param1=1; //定義變量1
$param2=2; //定義變量2
$param2 = $param1; //變量1賦值給變量2
echo $param2; //顯示為1
?>


2,傳引用

復(fù)制代碼 代碼如下:


<?php
$param2=1; //定義變量2
$param1 = &$param2; //將變量2的引用傳給變量1
echo $param2; //顯示為1
$param1 = 2; //把2賦值給變量1
echo $param2; //顯示為2
?>


3,函數(shù)傳值

復(fù)制代碼 代碼如下:


<?php
//傳值
$param1 = 1; //定義變量1
function add($param2) //傳參數(shù)
{
$param2=3; //把3賦值給變量2
}
$param3=add($param1); //調(diào)用方法add,并將變量1傳給變量2
echo '<br>$param1=='.$param1.'<br>'; //顯示為$param1==1
echo '<br>$param2=='.$param2.'<br>'; //顯示為$param2== 因為$param2是局部變量,所以不能影響全局
echo '<br>$param3=='.$param3.'<br>'; //顯示為$param3== 因為add方法沒有返回值,所以$param3為空
?>


4,函數(shù)傳引用

復(fù)制代碼 代碼如下:


<?php
//傳值
$param1 = 1; //定義變量1
function add(&$param2) //傳參數(shù)
{
$param2=3; //把3賦值給變量2
// return $param2; //返回變量2
}
echo '<br>$param1=='.$param1.'<br>'; //顯示為$param1==1 沒對變量1進(jìn)行操作
$param3=add($param1); //調(diào)用方法add,并將變量1的引用傳給變量2
echo '<br>$param1=='.$param1.'<br>'; //顯示為$param1==3 調(diào)用變量過程中,$param2的改變影響變量1,雖然沒有return
echo '<br>$param2=='.$param2.'<br>'; //顯示為$param2== 因為$param2局部變量,所以不能影響全局
echo '<br>$param3=='.$param3.'<br>'; //顯示為$param3== 如果把方法里面的return注釋去掉的話就為$param3==3
?>


5,函數(shù)傳引用2

復(fù)制代碼 代碼如下:


<?php
//傳引用
$param1 = 1;
function &add(&$param2)
{
$param2 = 2;
return $param2;
}
$param3=&add($param1);
$param4=add($param1);
echo '<br>$param3=='.$param3.'<br>'; //顯示為$param3==2
echo '<br>$param4=='.$param4.'<br>'; //顯示為$param4==2
echo '<br>$param1=='.$param1.'<br>'; //顯示為$param1==2 調(diào)用變量過程中,$param2的改變影響變量1
$param3++;
/*下面顯示為$param1==3,這是因為$param2和$param1引用到同一個地方,
* 返回值前面加了地址符號還是一個引用$param3=&add($param1);
* 這樣$param3,$param2和$param1引用到同一個地方,當(dāng)$param3++;時,
* $param1會被改變*/
echo '<br>$param1=='.$param1.'<br>';
$param4++;
/* 下面顯示為$param1==3,這里為什么是3而不是4呢,這是因為返回值前面沒有
* 地址符號,它不是一個引用所以當(dāng)$param4改變時不會影響$param1*/
echo '<br>$param1=='.$param1.'<br>';
?>


哈哈,不過我覺得傳引用會好一點,耗的資源少。上面測試沒有明顯的差距,可能是因為測試數(shù)據(jù)不夠大造成的,如果有更大數(shù)據(jù)來測試,我想會有明顯的不同。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 涞水县| 洞头县| 潢川县| 阳西县| 崇文区| 凯里市| 上蔡县| 刚察县| 广饶县| 三门县| 宜春市| 容城县| 镇沅| 德清县| 五原县| 文山县| 长岛县| 剑阁县| 高碑店市| 沐川县| 交城县| 濮阳县| 石泉县| 大埔区| 吉林省| 原平市| 乌拉特前旗| 永嘉县| 普兰店市| 张家港市| 集贤县| 景洪市| 岳西县| 大理市| 五指山市| 鄂托克旗| 安达市| 同仁县| 沙坪坝区| 丰顺县| 沙坪坝区|