首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 函數參數預設值:定義與使用

     編輯:PHP 綜合知識

PHP 函數參數可指定預設值,呼叫時省略該參數即自動使用預設值。預設值必須是常數值(標量、陣列、null),不能是變數或函數呼叫。

基本語法與範例

<?php
function capitalize($str, $each = true) {
    $str = strtolower($str);
    if ($each) {
        $str = ucwords($str);
    } else {
        $str = strtoupper($str);
    }
    echo "$str\n";
}

capitalize("hEllo WoRld!");        // Hello World!
capitalize("hEllo WoRld!", false); // HELLO WORLD!
?>

預設值規則

  • 預設值參數必須放在非預設值參數之後
  • 可用 null 作為預設值,函數內再判斷給預設
  • PHP 8.0+ 支援 Type $param = default 型別提示

進階:動態預設值模式

function connect($host, $port = null, $timeout = null) {
    $port    ??= 3306;
    $timeout ??= 5;
    // ...
}

傳遞參數時跳過中間預設值

PHP 不支援命名參數(PHP 8.0 前),若要跳過中間參數需全部傳遞或重構:

// PHP 8.0+ 命名參數
capitalize($str, each: false);

// 舊版:封裝選項陣列
function capitalizeOpt($str, array $opt = []) {
    $each = $opt['each'] ?? true;
    // ...
}
capitalizeOpt("test", ['each'=>false]);

常見錯誤

// 錯誤:預設值使用變數
$default = "abc";
function foo($x = $default) {} // Fatal error

// 錯誤:預設值參數在前
function bar($a = 1, $b) {} // Fatal error

最佳實踐

  • 預設值用 null + 函數內 ??= 給真正預設,避免「可變預設值」陷阱
  • 超過 3-4 參數改用選項陣列/物件
  • 公開 API 請加型別提示與預設值文件化

善用參數預設值簡化呼叫,注意規則與陷阱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved