溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

在php中傳值與傳引用的區(qū)別有哪些

發(fā)布時(shí)間:2021-01-27 16:44:42 來(lái)源:億速云 閱讀:145 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)在php中傳值與傳引用的區(qū)別有哪些,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一,php實(shí)例
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== 因?yàn)?param2是局部變量,所以不能影響全局
echo '<br>$param3=='.$param3.'<br>'; //顯示為$param3== 因?yàn)閍dd方法沒(méi)有返回值,所以$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 沒(méi)對(duì)變量1進(jìn)行操作
$param3=add($param1); //調(diào)用方法add,并將變量1的引用傳給變量2
echo '<br>$param1=='.$param1.'<br>'; //顯示為$param1==3 調(diào)用變量過(guò)程中,$param2的改變影響變量1,雖然沒(méi)有return
echo '<br>$param2=='.$param2.'<br>'; //顯示為$param2== 因?yàn)?param2局部變量,所以不能影響全局
echo '<br>$param3=='.$param3.'<br>'; //顯示為$param3== 如果把方法里面的return注釋去掉的話(huà)就為$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)用變量過(guò)程中,$param2的改變影響變量1
$param3++;
/*下面顯示為$param1==3,這是因?yàn)?param2和$param1引用到同一個(gè)地方,
* 返回值前面加了地址符號(hào)還是一個(gè)引用$param3=&add($param1);
* 這樣$param3,$param2和$param1引用到同一個(gè)地方,當(dāng)$param3++;時(shí),
* $param1會(huì)被改變*/
echo '<br>$param1=='.$param1.'<br>';
$param4++;
/* 下面顯示為$param1==3,這里為什么是3而不是4呢,這是因?yàn)榉祷刂登懊鏇](méi)有
* 地址符號(hào),它不是一個(gè)引用所以當(dāng)$param4改變時(shí)不會(huì)影響$param1*/
echo '<br>$param1=='.$param1.'<br>';
?>

上述就是小編為大家分享的在php中傳值與傳引用的區(qū)別有哪些了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI