[TOC]
>[success]PHP 的真正力量來自它的函數:它擁有幾千個內建的函數。
函數(function)是一段完成指定任務的已命名代碼,函數可以遵照 給它的一組值或參數完成任務,并且可能返回一個值。使用函數可以 節省編譯時間,因為無論調用多少次,函數只需被編譯一次。
**優點**
1. 控制程序設計的復雜性
2. 提高軟件的可靠性
3. 提高軟件的開發效率
4. 提高軟件的可維護性
5. 提高程序的重用性
6. 用戶定義函數
## 語法
~~~
<?php
function 函數名稱(參數1,參數2 …){
程序內容敘述;
return 返回值; //如需函數有返回值時使用;
}
?>
~~~
## 函數的使用
~~~
函數名稱(參數1,參數2 …);
$返回值變量 = 函數名稱(參數1,參數2);
~~~
### 函數名
它是函數在程序代碼中的識別名稱,函數名可以是以字母或下劃線 開頭后跟零個或多個字母、下劃線和數字的任何字符串。函數名不 區分大小寫。命名函數時不可使用已聲明的函數,或PHP內建的函 數名稱。
### 參數
所謂的參數就是用來把數值由函數外部傳入函數體中,并用來加以 運算處理。參數之間用“ ,”號隔開。當函數不需要任何數值傳入 時,可以省略參數。
### 返回值:
當調用函數時需要它返回一些數值,那么就要函數體中用return語 句實現。格式如下:
~~~
<?php
function sum($num1, $num2){
return $num1+$num2;
}
$i = sum(10,20);
var_dump($i);
?>
~~~
## 變量的作用域
### 變量的能見度
所謂變量的能見度,意指變量在程序中的可作用范圍。當一個變量 執行賦值動作后,會隨著聲明局部的差異,而有不同的作用范圍。 大致上來說變量會依據聲明的局部分為下列兩種:局部變量和全局 變量
### 局部變量
在函數之中聲明的變量就是局部變量,并且該變量只有在函數范圍之中 才能加以使用。如果其它程序局部需要調用使用該變量值時,必須透過 「return」指令,來將其傳回至主程序區塊以作后續處理。
### 全局變量
在函數范圍之外聲明的變量為全局變量,在函數內無法直接使用全局變量,函 數要使用全局變量,必須要利用global引入。
**實例**
~~~
<?php
$xbs="學并思";
function p() {
global $xbs; //利用 global 引入全局變量
echo $xbs;
}
p();
?>
~~~
## 靜態變量
PHP支持聲明函數變量為靜態的(**static**)。一個靜態變量在所有對該函數的 調用之間共享,并且僅在腳本的執行期間函數第一次被調用時被初始化。要聲明函數變量為靜態的用關鍵字static。通常,靜態變量的第一次使用 時賦予一個初始值。
## 變量函數
PHP 支持變量函數的概念。這意味著如果一個變量名后有圓括號, PHP 將尋找該變量的值同名的函數,并且將嘗試執行它。除了別的 事情以外,這個可以被用于實現回調函數,函數表等等。
## 遞歸調用
所謂的函數遞歸調用,就是函數可以在其聲明的執行中調用 執行自己。
函數遞歸調用最大的好處在于可以精簡程序中繁雜重復調用程序, 并且能以這種特性來執行一些較為復雜的運算動作。
## include 和 require 語句
通過 **include**或 **require** 語句,可以將 PHP 文件的內容插入另一個 PHP 文件(在服務器執行它之前)。
**include** (或 **require**)語句會獲取指定文件中存在的所有文本/代碼/標記,并復制到使用 include 語句的文件中。
**include** 和 **require** 語句是相同的,除了錯誤處理方面:
1. require 會生成致命錯誤(E_COMPILE_ERROR)并停止腳本
2. include 只生成警告(E_WARNING),并且腳本會繼續
3. include_once()和require_once()函數
和`include()`語句及`require()`類似,區別是如果該文件中的代碼已 經被包括了,則不會再次包括。
這兩個函數用于在腳本執行期間同一個文件有可能被包括超過一次 的情況下,以避免函數重定義,變量重新賦值等問題。
>[danger]練習: 創建一個自定義函數文件,自定義一個跟var_dump類型的函數,并在其它腳本中使用
- 序言
- 第一章:準備工作
- 寫在學習之前的話
- web應用開發結構
- 開發工具/環境
- 第二章:展現層面(HTML/CSS)
- HTML簡介
- HTML基礎
- HTML編碼
- HTML鏈接
- HTML圖像
- HTML列表
- HTML表單
- HTML表格(分水嶺)
- HTML 實體
- HTML框架
- CSS層疊樣式表
- CSS選擇器
- CSS文本/字體
- CSS繼承和疊加
- CSS框模型
- CSS浮動(分水嶺)
- CSS定位
- CSS背景
- CSS圖標字體
- CSS補充
- 開發技巧
- 第三章:展現層面(Javascript)
- JS簡介
- JS實現
- JS輸出交互
- JS變量
- JS數據類型
- JS運算符
- JS流程控制(分水嶺)
- JS函數
- JS數組
- JS對象(分水嶺)
- JS數組對象
- JS字符串對象
- JS數學對象
- JS日期對象
- JS BOM對象(分水嶺)
- JS DOM對象
- JS事件對象
- JS元素對象
- JS DOM節點
- 第四章:展現層面(Jquery)
- JQ簡介
- JQ使用
- JQ選擇器
- JQ篩選
- JQ屬性
- JQ-CSS
- JQ事件
- JQ文檔處理
- JQ效果
- JQ-ajax
- 第五章:邏輯/業務層面(PHP)
- PHP簡介
- PHP變量
- PHP數據類型
- PHP常量
- PHP運算符
- PHP流程控制
- PHP函數(分水嶺)
- PHP日期
- PHP數學
- PHP數組
- PHP字符串
- PHP正則表達式(分水嶺)
- PHP目錄操作
- PHP文件
- PHP上傳/下載
- PHP面向對象(分水嶺)
- PHP圖像處理
- PHP會話控制
- Ajax異步處理
- PHPMysql擴展
- PHPMysqli擴展
- PHPPdo擴展
- PHP接口
- PHP命名空間
- 第六章:邏輯/業務層面(框架設計)
- 第七章:存儲層面(mysql)
- Mysql基礎
- Mysql Sql簡介
- Mysql數據庫
- Mysql數據類型
- Mysql數據表
- Mysql操作記錄
- Mysql查詢
- Mysql修改表結構
- Mysql日期與時間
- Mysql分組統計
- Mysql多表查詢
- Mysql安全
- Mysql存儲引擎
- Mysql事務
- Mysql視圖
- Mysql觸發器
- Mysql存儲過程
- Mysql存儲函數
- Mysql優化
- 第八章:服務器(Linux)
- Linux介紹與安裝
- Shell
- 目錄與文件操作
- VIM編輯器使用
- 帳號管理
- SUDO
- 權限控制
- 壓縮與打包
- 軟件安裝
- 計劃任務
- 進程管理
- 寶塔Linux面板