PHP(7) 函數

函數

1、 函數分類

● 系統函數,也就是PHP的提供的一些函數庫,固然這些函數庫既有PHP自帶的函數庫(如String、Math、Date/Time等),也有外部提供的函數庫(GD二、MySQL、MSSQL等)。

若是是PHP自帶的函數庫的使用很是簡單,只要你的操做系統支持PHP,也就支持了PHP的內置函數庫。可是若是想使用外部提供的函數庫的話,那就必需要有相應的外部文件支持了。還記得咱們的配置php.ini中那些extension嗎?其實,它們就是一些外部函數所必須的一些動態連接庫文件(Dynamic Link Library)。

不管是內置函數庫仍是外部函數庫,它們的功能都是系統提供的,若是咱們想常常完成一些功能相同,可是參數值又有變化的某些功能,而這種功能系統函數又沒有提供,咱們就須要自定義函數了!自定義函數在有的資料中稱爲方法(Mthod),其實,它們在某種狀況下是徹底相同的。在面對過程編程中稱爲函數;而在面向對象編程中稱爲方法。

● 自定義函數

程序員根據自身的須要而建立的函數

自定義函數的好處在於封裝性和重用性。

2、 建立自定義函數

function 函數名稱([$參數名稱[=默認值[,…]]])

{

執行代碼;


[return 返回值]

}
 
注:在自定義函數中除爲調試程序的目的,不要帶有echo、print等輸語句,由於只要帶有輸出語句,那麼就表明你的函數只要之後被調用,那麼也就只能輸出了!而實際上說,不少的自定義函數的功能是爲了實現某種指定的功能,好比說獲取文件的擴展名,而獲取文件的擴展名又是文件改名的一部分,因此,不能帶有輸出語句,只能將獲得的結果返回,當返回結果後,你是想輸出,仍是作爲其餘程序的一部分來出現,那麼隨便了!
 

3、 調用自定義函數

[$變量名稱=]函數名稱([[$參數名稱=]參數值[,…]]);

下面咱們經過幾個案例來講一下!

4、 案例

1.產生字符和數字的隨機數(版本1)

function random()

{

 $char = "0123456789abcdefghijklmnopqrstuvwxyz";

 for($i=0;$i<4;$i++)

 {

  $chars .= substr($char,rand(0,strlen($char)-1),1);

 }

 return $chars;

}

$rndChar = random();

echo($rndChar);

這樣,咱們就產生了隨機的驗證碼,這其中substr、strlen是系統函數,具體的功能請你們查閱一下PHP手冊!

這個案例中產生的隨機數中有可能產生同一個字符出現屢次的狀況,若是想屏蔽這種狀況,只須要將上面的案例作一個小小的修改就能夠了!

2. 產生字符和數字的隨機數(版本2)

function random()

{

 $char = "0123456789abcdefghijklmnopqrstuvwxyz";

 for($i=0;$i<4;$i++)

 {

  $rndChar = substr($char,rand(0,strlen($char)-1),1) ;
  $char = str_replace($rndChar,NULL,$char);

  $chars .= $rndChar;

 }

 return $chars;

}

$rndChar = random();

echo($rndChar);

以上的這個案例不存在參數,下面咱們來看一個帶有參數的案例!
固然,產生隨機數的方法有不少,咱們只是拿出其中的一個來!

3.獲取文件的擴展名

在不少PHP程序中常常能夠容許用戶上傳附件或圖像,但爲保證附件文件或圖像文件在服務器上的名稱的惟一性,爲文件改名就顯得尤爲重要了!可是文件改名只須要更改主文件名,因此,咱們必需要獲知文件的擴展名!
function getExtName($file)

{

 $extName = substr($file,strrpos($file,".")+1);

 $extName = strtolower($extName);

 return $extName;

}

$file = "05.gif";

$extName = getExtName($file);

echo($extName);

這個案例中帶有一個必選參數,下面咱們來看一個帶有可選參數的案例!

4.獲取當前的時間戳

Unix時間戳指從公元1970-01-01 00:00:00至如今(指UTC時間)所經歷的秒數。

function getTimestamp($timezone = 8)

{

 $timestamp = time() + $timezone * 3600;

 return $timestamp;

}

echo(getTimestamp());

若是一個函數中既帶有必選參數,又帶有可選參數,可選參數必須放置在必選參數以後!

另外,既然系統函數容許嵌套,自定義函數也容許嵌套,可是必須正確的進行嵌套!

函數是編程中很是重要的部分,這其中的理解只能靠你們的造化了!^_^
 
5、包含文件
 
若是有多個文件中都須要調用某個自定義函數,那麼能夠經過包含文件的方法來實現,也就是說,咱們須要將共享的某些信息存儲在包含文件中,若是其它頁面想調用這些共享信息,咱們只須要來調用這個文件就能夠了!這樣,就能夠實現"牽一髮而動全身"的目的了!
 
調用包含文件能夠經過如下語句來實現:
 
include("文件的位置及全稱");
 
include_once("文件的位置及全稱");
 
require("文件的位置及全稱");
 
require("文件的位置及全稱");
 
include和require的區別是:
 
若是指定的包含文件不存在或名稱引用錯誤,include產生一個警告信息;後續代碼繼續執行;require則產生一個致命錯誤,中止後續代碼的執行!
相關文章
相關標籤/搜索