PHP - 函式引數



PHP 中的函式可以定義為接受一個或多個引數。函式引數是在定義函式時,函式名稱前面的括號內用逗號分隔的表示式列表。引數可以是任何標量型別(數字、字串或布林值)、陣列、物件,甚至另一個函式。

function foo($arg_1, $arg_2, $arg_n) {
   statements;
   return $retval;
}

引數充當在函式體內部處理的變數。因此,它們遵循與任何普通變數相同的命名約定,即它們應該以“$”開頭,並且可以包含字母、數字和下劃線。

注意 - 對可以定義的引數數量沒有限制。

當需要呼叫引數化函式時,您必須確保傳遞給它的值數量與函式定義中的引數數量相同。

foo(val1, val2, val_n);

使用引數定義的函式可以產生一個結果,該結果會根據傳遞的值動態變化。

示例

以下程式碼包含帶有兩個引數的 addition() 函式的定義,並顯示這兩個數的加法結果。執行時輸出取決於傳遞給函式的兩個值。

<?php
   function addition($first, $second) {
      $result = $first+$second;
      echo "First number: $first \n";
      echo "Second number: $second \n"; 
      echo "Addition: $result";
   }

   addition(10, 20);

   $x=100;
   $y=200;
   addition($x, $y);
?>

它將產生以下輸出 -

First number: 10 
Second number: 20 
Addition: 30 
First number: 100 
Second number: 200 
Addition: 300

形式引數和實際引數

有時術語引數用於形參。實際上,這兩個術語存在一定的差異。

  • 引數指的是函式定義中使用的變數,而引數指的是呼叫函式時傳遞給函式的值。

  • 引數可以是字面量、變數或表示式

  • 函式定義中的引數也常稱為形式引數,而傳遞的內容稱為實際引數

  • 形式引數和實際引數的名稱不必相同。實際引數的值按從左到右的順序分配給相應的形式引數。

  • 函式中定義的形式引數數量和傳遞的實際引數數量應該相同。

示例

當實際引數數量小於形式引數數量時,PHP 會引發ArgumentCountError。但是,如果實際引數數量多於形式引數數量,則會忽略額外的實際引數。

<?php
   function addition($first, $second) {
      $result = $first+$second;
      echo "First number: $first \n";
      echo "Second number: $second \n";
      echo "Addition: $result \n";
   }

   # Actual arguments more than formal arguments
   addition(10, 20, 30);

   # Actual arguments fewer than formal arguments
   $x=10;
   $y=20;
   addition($x);
?>

它將產生以下輸出 -

First number: 10 
Second number: 20 
Addition: 30 
PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments
to function addition(), 1 passed in /home/cg/root/20048/main.php
on line 16 and exactly 2 expected in /home/cg/root/20048/main.php:2

引數型別不匹配

PHP 是一種動態型別語言,因此在將實際引數的值複製到形式引數時,它不會強制執行型別檢查。但是,如果函式體內的任何語句嘗試執行特定於不支援它的特定資料型別的操作,則 PHP 會引發異常。

在上面的 addition() 函式中,假設傳遞的是數字引數。如果傳遞字串引數,PHP 不會有任何異議,但執行加法的語句會遇到異常,因為"+" 操作未針對字串型別定義。

示例

請看以下示例 -

<?php
   function addition($first, $second) {
      $result = $first+$second;
      echo "First number: $first \n";
      echo "Second number: $second \n";
      echo "Addition: $result";
   }

   # Actual arguments are strings
   $x="Hello";
   $y="World";
   addition($x, $y);
?>

它將產生以下輸出 -

PHP Fatal error:  Uncaught TypeError: Unsupported operand types: string + string in hello.php:5

但是,PHP 是一種弱型別語言。它會盡可能嘗試將變數轉換為相容的型別。因此,如果傳遞的值之一是數字的字串表示形式,而第二個是數字變數,則 PHP 會將字串變數轉換為數字以執行加法運算。

示例

請看以下示例 -

<?php
   function addition($first, $second) {
      $result = $first+$second;
      echo "First number: $first \n";
      echo "Second number: $second \n";
      echo "Addition: $result";
   }

   # Actual arguments are strings
   $x="10";
   $y=20;
   addition($x, $y);
?>

它將產生以下輸出 -

First number: 10 
Second number: 20 
Addition: 30
廣告