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

PHP 進階程式設計:函數完整指南

     編輯:PHP 綜合知識

PHP 函數基礎與進階應用

函數是 PHP 程式設計中實現程式碼重用與模組化的核心機制。本文系統整理了 PHP 函數的定義、參數傳遞、變數作用域、返回值、遞迴、變數函數等核心概念,並附上實戰範例幫助開發者快速掌握。

1. 使用者自訂函數

PHP 允許開發者定義自己的函數,語法結構如下:

function 函數名稱([$參數1[, $參數2[, ...]]]) {
    // 函數主體程式碼
}

注意:函數名稱不可與內建函數或已定義的使用者函數重複。參數個數可為零個或多個,預設以「傳值」方式傳遞。

2. 參數傳遞機制:傳值 vs 傳址

預設情況下,參數以「傳值」方式傳入,函數內部修改參數不會影響外部變數。若需在函數內修改外部變數,必須使用「傳址」方式,在參數前加上 & 符號:

<?php
function color(&$col) {
    $col = "yellow";
}
$blue = "blue";
color($blue);
echo $blue; // 輸出 "yellow"
?>

3. 變數作用域

PHP 採用區域作用域規則:

  • 主程式定義的變數屬於全域作用域,預設在函數內不可直接存取。
  • 函數內定義的變數屬於區域作用域,函數結束後即銷毀。
<?php
function sum() {
    $count = 2; // 區域變數
}
sum();
echo $count; // 錯誤:$count 未定義
?>

若需在函數內使用全域變數,可使用 global 關鍵字或 $GLOBALS 陣列。

4. 函數返回值

使用 return 語句可立即結束函數執行並返回值。返回值型別不限,可為標量、陣列、物件等任意型別。

<?php
function my_function($a = 1) {
    echo $a;
    return; // 結束函數,後續程式碼不執行
    $a++;
    echo $a;
}
my_function(); // 輸出 1
?>

5. 函數呼叫與返回值處理

函數定義後即可呼叫。若函數有返回值,可將其指派給變數;若無返回值,直接呼叫函數名稱即可。

<?php
// 陣列升序排序函數
function my_sort($array) {
    for ($i = 0; $i < count($array); $i++) {
        for ($j = $i + 1; $j < count($array); $j++) {
            if ($array[$i] > $array[$j]) {
                $tmp = $array[$j];
                $array[$j] = $array[$i];
                $array[$i] = $tmp;
            }
        }
    }
    return $array;
}

$arr = array(6, 4, 7, 5, 9, 2);
$sort_arr = my_sort($arr);
foreach ($sort_arr as $num) echo $num; // 輸出 245679
?>

6. 遞迴函數

PHP 支援遞迴函數(函數呼叫自身),可用於實現階乘、樹狀結構遍歷等邏輯。必須設定終止條件,否則會導致無限遞迴耗盡記憶體。

<?php
function factorial($n) {
    if ($n == 0) return 1;
    else return $n * factorial($n - 1);
}
echo factorial(10); // 輸出 3628800
?>

7. 變數函數

PHP 允許將函數名稱儲存在變數中,透過在變數後加上括號 () 即可呼叫該函數,實現動態函數呼叫。

$func_name = 'my_function';
$func_name(); // 等同於呼叫 my_function()

8. 實戰範例:簡易計算機程式

結合 HTML 表單與 PHP 函數實作基本四則運算,包含輸入驗證與除零錯誤處理:

<html>
<head><title>計算機程式</title></head>
<body>
<form method="post">
<table>
<tr><td>
<input type="text" size="4" name="number1">
<select name="calculate">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" size="4" name="number2">
<input type="submit" name="ok" value="計算">
</td></tr>
</table>
</form>
</body>
</html>

<?php
function cac($a, $b, $calculate) {
    if ($calculate == "+") return $a + $b;
    if ($calculate == "-") return $a - $b;
    if ($calculate == "*") return $a * $b;
    if ($calculate == "/") {
        if ($b == "0") echo "除數不能等於0";
        else return $a / $b;
    }
}

if (isset($_POST['ok'])) {
    $number1 = $_POST['number1'];
    $number2 = $_POST['number2'];
    $calculate = $_POST['calculate'];
    if (is_numeric($number1) && is_numeric($number2)) {
        $answer = cac($number1, $number2, $calculate);
        echo "<script>alert('" . $number1 . $calculate . $number2 . "=" . $answer . "')</script>";
    } else {
        echo "<script>alert('輸入的不是數字!')</script>";
    }
}
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved