首頁  >  文章  >  後端開發  >  php函數的參數賦值有哪幾種

php函數的參數賦值有哪幾種

青灯夜游
青灯夜游原創
2022-04-24 12:10:223220瀏覽

php函數的參數賦值有3種:1、值傳遞賦值,將實參的值複製一份再賦值給函數的形參;2、引用傳遞賦值,把實參的記憶體位址複製一份,然後傳遞給函數的形參,進而將實參值賦值給形參;3、直接給函數的參數指定預設值,語法「函數名稱(參數變數='值')」。

php函數的參數賦值有哪幾種

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

php函數的參數賦值有3種:

1、值傳遞賦值

2、引用傳遞賦值

3、預設參數值

以下跟大家詳細介紹一下。

1、值傳遞賦值

值傳遞是 PHP 中函數的預設傳值方式,也稱為「拷貝傳值」。

顧名思義值賦值的方式會將實參的值複製一份再傳遞給函數的形參,所以在函數中操作參數的值並不會對函數外的實參造成影響。

因此如果不希望函數修改實參的值,就可以透過值傳遞的方式。

範例:

<?php
header('content-type:text/html;charset=utf-8');   
function swap($a, $b){
    echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>';
    $temp = $a;
    $a = $b;
    $b = $temp;
    echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>';
}
$x = 5;
$y = 7;
echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>';
swap($x, $y);
echo '函数外,交换后 $x = '.$x.', $y = '.$y;
?>

php函數的參數賦值有哪幾種

2、引用傳遞賦值

參數的引用傳遞就是把實參的記憶體位址複製一份,然後傳遞給函數的形參,進而將實參值賦值給形參。

實參和形參都指向同一個記憶體位址,因此函數對形參的操作,會影響到函數外的實參。

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

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

範例:

<?php
header('content-type:text/html;charset=utf-8');   
function swap(&$a, &$b){
    echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>';
    $temp = $a;
    $a = $b;
    $b = $temp;
    echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>';
}
$x = 5;
$y = 7;
echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>';
swap($x, $y);
echo '函数外,交换后 $x = '.$x.', $y = '.$y;
?>

php函數的參數賦值有哪幾種

3、預設參數值

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

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

function name ($str = '默认值', $url) {
    echo $str;  
}

形參與預設值之間需要使用=連線。

範例:

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

php函數的參數賦值有哪幾種

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

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

php函數的參數賦值有哪幾種

推薦學習:《PHP影片教學

以上是php函數的參數賦值有哪幾種的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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