首頁 >後端開發 >PHP問題 >php給函數傳參數的方法有哪些

php給函數傳參數的方法有哪些

青灯夜游
青灯夜游原創
2021-07-20 19:44:448795瀏覽

php函數傳遞參數的方法:1、值傳遞,將實參的值複製一份再傳遞給函數的形參;2、引用傳遞,把實參的記憶體位址複製一份,傳遞給函數的形參;3、預設參數,給函數的某個或多個形式參數指定一個預設的值;4、可變長度參數,將會被當作一個陣列傳遞給函數。

php給函數傳參數的方法有哪些

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

在呼叫函數時,需要向函數傳遞參數,傳入函數的參數稱為實參,而函數定義的參數稱為形參。而傳遞參數給函數的方式有四種,分別是值傳遞、引用傳遞、預設參數、可變長度參數。

1、值傳遞

值傳遞是 PHP 中函數的預設傳值方式,也稱為「拷貝傳值」。顧名思義值傳遞的方式會將實參的值複製一份再傳遞給函數的形參,所以在函數中操作參數的值並不會對函數外的實參造成影響。因此如果不希望函數修改實參的值,就可以透過值傳遞的方式。

【範例】下面定義一個簡單的函數,函數有兩個參數,在函數中交換參數的值。

<?php
    function swap($a, $b){
        echo &#39;函数内,交换前 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
        $temp = $a;
        $a = $b;
        $b = $temp;
        echo &#39;函数内,交换后 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
    }
    $x = 5;
    $y = 7;
    echo &#39;函数外,交换前 $x = &#39;.$x.&#39;, $y = &#39;.$y.&#39;<br>&#39;;
    swap($x, $y);
    echo &#39;函数外,交换后 $x = &#39;.$x.&#39;, $y = &#39;.$y;
?>

運行結果如下:

函数外,交换前 $x = 5, $y = 7
函数内,交换前 $a = 5, $b = 7
函数内,交换后 $a = 7, $b = 5
函数外,交换后 $x = 5, $y = 7

透過運行結果可以看到,在函數內,數值確實是交換了,而在函數外部,數值卻沒有變化。因此可以說,函數的值傳遞只是傳遞變數的副本。那麼要是想讓函數能夠操作函數外實參的話,就需要使用引用傳遞的方式了。

2、引用傳遞

參數的引用傳遞就是把實參的記憶體位址複製一份,然後傳遞給函數的形參,實參與形參都指向同一個記憶體位址,因此函數對形參的操作,會影響到函數外的實參。

依引用傳遞就是將實參的記憶體位址傳遞到函數的形參中。因此實參和形參指向的是同一個記憶體位址。這時在函數內部的所有運算都會影響到函數外實參的值。引用傳遞的方式就是在值傳遞的基礎上加上一個&符號,如下所示:

function name (&参数1, &参数2, ..., &参数3) {
    ...    
}

【範例】將上面範例的程式碼略作調整,使用引用傳遞的方式向swap 函數中傳遞參數,程式碼如下所示:

<?php
    function swap(&$a, &$b){
        echo &#39;函数内,交换前 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
        $temp = $a;
        $a = $b;
        $b = $temp;
        echo &#39;函数内,交换后 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
    }
    $x = 5;
    $y = 7;
    echo &#39;函数外,交换前 $x = &#39;.$x.&#39;, $y = &#39;.$y.&#39;<br>&#39;;
    swap($x, $y);
    echo &#39;函数外,交换后 $x = &#39;.$x.&#39;, $y = &#39;.$y;
?>

運行結果如下:

函数外,交换前 $x = 5, $y = 7
函数内,交换前 $a = 5, $b = 7
函数内,交换后 $a = 7, $b = 5
函数外,交换后 $x = 7, $y = 5

#3、預設參數

預設參數就是給函數的某個或多個形式參數指定一個預設的值,如果呼叫函數時不傳入對應的值,那麼函數就會使用這個預設值,這樣可以避免在呼叫時出現沒有參數的錯誤,也可以讓一些程式顯得更合理。如果傳入對應的參數,就會替換這個預設值。

函數的預設參數如下所示:

function name ($str = &#39;PHP中文网&#39;, $url) {
    echo $str;  
}

其中,形式參數$str 後面的「PHP中文網」就是它的預設值,形參與預設值之間需要使用=連接。

【範例】下面來定義一個具有預設參數的函數,如下所示:

<?php
    function add($a, $b=56){
        echo $a.&#39; + &#39;.$b.&#39; = &#39;.($a+$b).&#39;<br>&#39;;
    }
    add(11);
    add(37, 29);
?>

運行結果如下:

11 + 56 = 67
37 + 29 = 66

預設參數也可以是多個,而且預設參數必須放在非預設參數右邊,且指定預設參數的值必須是一個特定的值,如數字、字串,而不能是一個變數。

【範例】下面來定義一個具有多個預設參數的函數,如下所示:

<?php
    function add($a, $b=33, $c=57){
        echo $a.&#39; + &#39;.$b.&#39; + &#39;.$c.&#39; = &#39;.($a+$b+$c).&#39;<br>&#39;;
    }
    add(11);
    add(31, 22);
    add(64, 9, 7);
?>

運行結果如下:

11 + 33 + 57 = 101
31 + 22 + 57 = 110
64 + 9 + 7 = 80

4、可變長度參數

在PHP 5.6 及以後的版本中,函數的形式參數可使用…來表示函數可接受一個可變數量的參數,可變參數將會被當作一個陣列傳遞給函數。範例如下:

<?php
    function test(...$arr){
        print_r($arr);
    }
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    test(1, 2, 3, 4);
    test(5, 6, 7, 8, 9, 10);
?>

運行結果如下:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Array
(
    [0] => 5
    [1] => 6
    [2] => 7
    [3] => 8
    [4] => 9
    [5] => 10
)

推薦學習:《PHP影片教學

以上是php給函數傳參數的方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn