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

PHP 函數參數預設值:定義、呼叫與型別宣告完整範例

     編輯:PHP 相關知識

前言

PHP 允許函數參數指定預設值,呼叫時省略該參數即使用預設值。本文示範語法、型別宣告、預設值運算式與常見陷阱。

基本語法與範例

<?php
function capitalize(string $str, bool $each = true): void {
    $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!
?>

進階:預設值運算式(PHP 8.0+)

<?php
function greet(string $name = 'Guest', string $time = date('H:i')): void {
    echo "Hello $name, current time: $time\n";
}

greet();              // Hello Guest, current time: 14:30
greet('Alice');       // Hello Alice, current time: 14:30
greet('Bob', '09:00'); // Hello Bob, current time: 09:00
?>

預設值可為標量運算式(算術、字串串接、函數呼叫、new Class()、[] 陣列),但不可使用變數或常數(除非是類別常數)。

參數順序規則

  • 有預設值的參數必須放在無預設值參數之後。
  • 錯誤範例:function foo($a = 1, $b) {} → Fatal Error。

型別宣告與預設值

<?php
// PHP 7.0+ 型別宣告
function process(array $data = [], int $limit = 10, ?string $prefix = null): void {
    // $data 預設空陣列,$limit 預設 10,$prefix 可為 null
}

process();                    // 皆用預設值
process(['a','b']);           // $data 指定,其餘預設
process(['a','b'], 5, 'PRE'); // 全部指定
?>

可變參數與預設值結合

<?php
function sum(int ...$numbers): int {
    return array_sum($numbers);
}

echo sum() . "\n";        // 0 (空陣列)
echo sum(1,2,3) . "\n";   // 6
?>

總結

善用參數預設值可減少多載函數數量,提升 API 彈性。注意參數順序規則,PHP 8+ 支援運算式預設值更強大。希望本文對您的 PHP 程式設計有所幫助。

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