php函數之值傳遞&引用傳遞打賞

由于工作忙碌,博客已經斷更整一年,最近終于抽出點時間,來分享一些近一年經歷中印象深刻的經歷。

大概三年前,曾經整理過這樣兩篇文章《JavaScript函數究竟是值傳遞還是引用傳遞?》、《Java方法究竟是值傳遞還是引用傳遞?》,不為別的,只因為在工作中有人遇到類似問題,查閱資料后加以整理。巧的是,前陣子做php的同事又造出了相似的bug,不同的是,php并不像前兩者一切皆值傳遞。

在php的世界里,存在傳值和傳引用兩種方式

傳值:通過拷貝變量值,傳遞到函數內部,內部修改不會影響到變量本身;
傳引用 :以地址的方式傳遞變量到函數內部,內部修改可直接影響變量。

舉個例子

// 值傳遞
$var1 = 1;
function test1($var2)  
{
    $var2 = 2;
}
test1($var1);
echo $var1; // 1

// 引用傳遞
$var3 = 1;
function test2(&$var4)  
{
    $var4 = 2;
}
test2($var3);
echo $var3; // 2

兩者差異顯而易見,但是這似乎不太符合函數式編程的思想,沒有返回值,更難以定位問題。對此,大家可以根據需求,用不用引用傳遞自行判斷吧

php函數之值傳遞&引用傳遞
文章《php函數之值傳遞&引用傳遞》二維碼
  • 微信打賞
  • 支付寶打賞

已有2條評論

  1. 頭條新聞

    文章不錯支持一下吧,非常喜歡

    2019-05-21 00:57 回復
  2. 熱搜頭條

    文章不錯支持一下吧

    2019-05-09 00:15 回復

(必填)

(必填)

(可選)

黑龙江22选5开奖