php函數之常規參數函數和偽型別參數函數

來源:互聯網
上載者:User
在php函數中,函數的參數才是決定如何成功應用一個函數或是控制一個函數執行行為的標準。參輸的設定和應用會有多種方式,學會聲明具有不同參數的函數,以及可以成功調用各種形式參輸的函數,是學習函數的關鍵。前面介紹如何聲明及應用各種形式的php函數。本節將根據函數參數的特點,介紹其中的兩個參數類型: 常規參數函數偽型別參數函數。

php常規參數函數

常規參數函數,就是實參和形參應該個數相等、類型一致,像 C 語言或者 JAVA 等強型別語言中的參數使用方法一樣。 這類函數的調用比較容易,因為靈活性不大,像強類語言一樣要求比較嚴格(參數個數是固定的,每個參數的類型也是固定的)。

常規參數的函數格式說明類似如下的形式:

example(name, age, height)                // 常規參數的函數格式

在php中,如果聲明這樣的函數就發揮不了PHP作為弱類型語言的優勢。例如,在上面的常規參數的函數文法格式樣本中,聲明一個名為 example 的函數,函數執行後返回一個字串類型的值。該函數有三個參數,調用時傳遞的參數個數和順序必須一致,並且第一個參數必須是字串類型,第二個參數必須是整型,第三個參數必須是雙精確度類型。例如,在自訂函數中求兩個整數的平方和函數就是一個常規參數的函數,要求必須有兩個整型的參數。系統函數也有很多是這種類型,一些使用常規參數的系統函數如下:

string chr(int ascii)          // 必須使用一個整數作為參數float ceil(float value)       // 必須使用一個浮點數作為參數array array_combine(array keys, array values)            // 必須使用兩個數組作為參數int strnatcmp (string str1, string str2)          // 必須使用兩個字串作為參數string implode(string glue, array pieces)    // 第一個參數必須是字串,第二個參數必須是數組string readdir(resource dir_handle)            // 必須使用一個資源類型作為參數

php偽型別參數的函數

PHP是弱類型的語言,不僅在聲明變數時不需要指定類型,在聲明函數時參數也不需要指定類型,所以在PHP中函數的每個參數都可以為其傳遞任意類型的值。因為弱類型是 PHP 語言最大的特點,在聲明一個函數時,可以讓同一個參數接受任意類型的值。而在 C 或者 JAVA 等強型別程式設計語言中,如果要聲明對數組進行排序的方法,就必須為每一種類型的數組寫一個排序的方法,這就是所謂的函數重載。而PHP 這類弱型別參數則不存在重載的概念。在PHP中,如果對各種類型的數組進行排序,只要聲明一個函數就夠了,所以偽型別參數的函數是PHP中最常見的函數應用形式。

偽型別參數的函數格式說明類似如下所示:

mixed funName (mixed $args)    // 在參數列表中出現類型使用 mixed 描述的參數number funName (number $args)    // 在參數列表中出現類型使用 number 描述的參數

PHP的偽類型,包括 mixed、number 和 callback 三種。在聲明函數時,如果參數能夠接受多種不同但並不必須是所有類型的值,在函數的說明文檔中就可以使用 mixed 標記這個參數類型。如果說明一個參數可以是 整型或者浮點型,就可以使用 number 標記參數。除了參數可以傳遞偽類型的參數,函數的傳回值也可以根據參數類型的不同返回不同類型的值,像 empty()、pow()等都是這樣的函數。

例如call_user_func()函數就可接收使用者自訂的函數作為一個參數,它是php的一個內建函數。callback函數不僅可以是一個函數,也可以是一個對象的方法,靜態類的方法也可以。一個php函數用函數名字串來傳遞,可以傳遞任何內建的或者使用者自訂的函數。

下面來一個簡單的執行個體:

<?php$data = array("name"=>"callback" , "value"=>"test");$rs1 = http_build_query($data);        //直接調用php函數$rs2  = call_user_func("http_build_query",$data);    //使用回呼函數echo $rs1;     //name=callback&value=testecho "<br />";echo $rs2;     //name=callback&value=test?>

說明:這裡需要注意的是,參數1必須是可使用的函數可以通過function_exists()返回true的函數,這裡提醒isset,empty,is_null 等認為的常用函數實際上是一個操作符.並不能算函數。

【相關教程推薦】

1. 《php.cn獨孤九賤(4)-php視頻教程》

2. php編程從入門到精通全套視頻教程

3. php實戰視頻教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.