在 PHP 中,return 語句只能返回單一值,且一旦執行,函數即刻終止。這看似限制了函數一次輸出多個結果的能力,但 PHP 的動態類型系統提供了靈活的變通方案:利用陣列或物件封裝多個值。
return 可接受任意類型變數,因此我們可以將多個返回值裝入一個陣列,再將該陣列作為唯一返回值輸出。調用端再透過索引或鍵名提取所需資料。
<?php
/**
* 示範函數:對字串進行多種大小寫轉換並一次性返回所有結果
* @param string $string 輸入字串
* @return array 包含原字串、全大寫、全小寫、單詞首字母大寫四種變體
*/
function stringCaseVariants($string) {
$results = [];
$results[] = $string; // 原始字串
$results[] = strtoupper($string); // 全大寫
$results[] = strtolower($string); // 全小寫
$results[] = ucwords($string); // 單詞首字母大寫
return $results;
}
// 調用示範
$multiResult = stringCaseVariants('The quick brown fox jump over the lazy dog');
print_r($multiResult);
?>
Array
(
[0] => The quick brown fox jump over the lazy dog
[1] => THE QUICK BROWN FOX JUMP OVER THE LAZY DOG
[2] => the quick brown fox jump over the lazy dog
[3] => The Quick Brown Fox Jump Over The Lazy Dog
)
使用數字索引雖然簡潔,但語義不明確。實際開發中建議採用關聯陣列:
function stringCaseVariantsAssoc($string) {
return [
'original' => $string,
'upper' => strtoupper($string),
'lower' => strtolower($string),
'title' => ucwords($string),
];
}
$data = stringCaseVariantsAssoc('hello world');
echo $data['upper']; // 輸出:HELLO WORLD
&,直接修改外部變數(需謹慎使用,降低代碼可預測性)。class 或 stdClass 物件,利用型別提示增強 IDE 支援。@return array{key:type, ...} 格式,方便靜態分析工具檢查。掌握「以一返多」技巧,能讓 PHP 函數介面設計更靈活、表達力更強。