php傳參都是字串嗎

2022-12-15 18:01:28

不是,php傳參可以是字串、數位、布林值、陣列等。從PHP5.6版本開始支援傳遞陣列引數,函數的形式引數可使用「…」來表示函數可接受一個可變數量的引數,而可變引數將會被當作一個陣列傳遞給函數,語法「function 函數名(...$arr){//執行程式碼}」。

php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:

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

PHP 自定義的函數

在 PHP 中宣告一個自定義的函數可以使用下面的語法格式:

function 函數名 (引數1, 引數2, ..., 引數n){
    函數體;
    return 返回值;
}
登入後複製

宣告函數時函數名後面的小括號「()」也是必須有的,在小括號中包含了一組可以接受的參數列,引數就是宣告的變數,然後在呼叫函數時可以將變數傳遞給函數。參數列可以為空,也可以有一個或多個引數,多個引數之間使用逗號分隔;

在 PHP 中只要在需要使用函數的位置,使用函數名稱和參數列進行函數呼叫:

函數名 (引數1, 引數2, ..., 引數n);
登入後複製

可以看出:函數的參數列是由零個或多個引陣列成的,每個引數之間使用逗號分隔開。

根據引數使用的位置,引數分為形式引數和實際引數兩種。

形式引數就是定義函數時函數名後面括號內的參數列(簡稱「形參」),就像它的名字一樣,形參本身沒有具體的值。因為函數體中需要使用外部傳入的引數,為了使引數可以正確地傳遞進來,就需要通過形式引數與函數體裡面的資料進行傳遞,形式引數如下圖所示。

實際引數就是我們在呼叫函數時函數名後面括號中的若干個引數(簡稱「實參」),實參和形參需要按順序一一對應,它會替換形式引數在函數體中對應的變數值,函數的引數可以是一個具體的值,也可以是一個變數,實際引數如下圖所示。

php傳參

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

1、值傳遞

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

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

<?php
  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;
?>
登入後複製

執行結果如下:

1.png

2、參照傳遞

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

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

function name (&引數1, &引數2, ..., &引數3) {
  ...  
  }
登入後複製

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

<?php
  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;
?>
登入後複製

執行結果如下:

2.png

3、預設引數

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

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

function name ($str = 'hello', $url) {
  echo $str; 
}
登入後複製

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

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

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

3.png

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

4、可變長度引數--將一個陣列傳遞給函數

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

<?php
    function test(...$arr){
        var_dump($arr);
    }
    test(1, 2, 3, 4);
    test(5, 6, 7, 8, 9, 10);
?>
登入後複製

推薦學習:《》

以上就是php傳參都是字串嗎的詳細內容,更多請關注TW511.COM其它相關文章!