本站電子書

您可以在這些電子書店找到本站電子書: Google Play 圖書iBooks StoreHyReadReadmooPubu
===>>>本站推出學習遊戲意見調查<<<===《如何自學程式設計》入選 Google Play 台灣地區2016年度最佳書籍

PHP 入門指南 - 函數

函數 (function) 是一種功能性的模組,可以將程式 (program) 分割成小部分,藉由呼叫函數安排執行順序




定義函數使用關鍵字 (keyword) function ,其後空一格接函數名稱,函數名稱後緊接小括弧,小括弧中為參數列 (parameter list) ,函數可以有參數 (parameter) 也可以沒有參數,同樣可以有回傳值 (return value) 也可以沒有回傳值,端視需要而定。我們舉一例如下
function big($a, $b) {
    if ($a > $b) {
        return $a;
    }
    else {
        return $b;
    }
}


big() 函數回傳兩個參數中的較大值,參數數量則是依需求自己定義,這裡為兩個 $a$b ,另外
此例用了兩個 return ,有回傳值的函數至少要有一個 returnreturn 就是函數結束執行,將控制權交還原本呼叫函數的地方。


我們將 big() 寫成一個完整範例
<?php
echo "\n";
echo big(33, 22)." is bigger!\n";
echo big("John", "Mary")." is bigger!\n";
echo "\n";

function big($a, $b) {
    if ($a > $b) {
        return $a;
    }
    else {
        return $b;
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:bigdemo.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2012 年 11 月 */
?>


第 3 行先比較 33 與 22 的大小,然後印出哪一個比較大
echo big(33, 22)." is bigger!\n";


第 4 行則是比較 "John" 與 "Mary" 的大小,字串比較是先比較第一個字元,按字母順序,順序越後面的值越大
echo big("John", "Mary")." is bigger!\n";


執行結果如下



函數常見的運用為重複性質的工作,我們另舉一例如下
<?php
$i = 10;
print_newline();
while ($i > 0) {
    print_something($i);
    $i--;
}
print_newline();

function print_something($a) {
    echo $a."\n";
}

function print_newline() {
    echo "\n";
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:printdemo.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2012 年 11 月 */
?>


這是我們之前寫過的倒數計時程式,只是將印出的工作定義給函數,這裡可以看到函數名稱可以使程式有清楚的語意
print_newline();
while ($i > 0) {
    print_something($i);
    $i--;
}
print_newline();


執行結果是一樣的



雖然函數已經很好用了,可是 PHP 還允許程式設計師定義自己物件 (object) ,也就是設計類別 (class) 。接下來,我們來看看類別吧!


中英文術語對照
函數function
程式program
關鍵字keyword
參數列parameter list
參數parameter
回傳值return value
物件object
類別class


您可以繼續參考
基礎篇


相關目錄
回 PHP 入門指南
回 PHP 教材
回首頁


參考資料
http://php.net/manual/en/language.functions.php
http://www.php.net/manual/en/functions.user-defined.php
http://www.php.net/manual/en/functions.arguments.php
http://www.php.net/manual/en/functions.returning-values.php
http://www.php.net/manual/en/functions.variable-functions.php

沒有留言: