PHP函數(shù)可以選擇性地接受一個(gè)或多個(gè)參數(shù),這些參數(shù)是傳遞給的值功能。
參數(shù)是保存值的變量當(dāng)函數(shù)被調(diào)用時(shí)傳遞給它。
要指定函數(shù)的參數(shù),請?jiān)诶ㄌ栔g插入一個(gè)或多個(gè)變量名稱,如下:
function myFunc( $oneParameter, $anotherParameter,... ) { // (do stuff here) }
我們需要給每個(gè)參數(shù)一個(gè)名字來引用它在函數(shù)里面。PHP將把它接收的值復(fù)制到這些參數(shù)中:
<?PHP function multiply($num1, $num2) { $total = $num1 * $num2; print $num1; print "\n"; print $num2; return $total; } $mynum = multiply(5, 10); echo $mynum; ?>
上面的代碼生成以下結(jié)果。
下面的代碼顯示了如何從函數(shù)創(chuàng)建定義列表。
<!DOCTYPE html> <html> <body> <h2>A function to create a definition list</h2> <?php $iterations = 10; function defList( $contents ) { $markup = "<dl>\n"; foreach ( $contents as $key => $value ) { $markup .= " <dt>$key</dt><dd>$value</dd>\n"; } $markup .= "</dl>\n"; return $markup; } $myBook = array( "title" => "The Grapes of Wrath", "author" => "John Steinbeck", "pubYear" => 1939 ); echo defList( $myBook ); ?> </body> </html>
上面的代碼生成以下結(jié)果。
如果未傳遞相應(yīng)的參數(shù),則默認(rèn)參數(shù)可以具有值當(dāng)函數(shù)被調(diào)用時(shí)。
PHP允許您使用可選參數(shù)創(chuàng)建函數(shù)。您可以如下定義可選參數(shù):
function myFunc( $parameterName=defaultValue ) { // (do stuff here) }
要定義函數(shù)的默認(rèn)參數(shù),請?jiān)谧兞亢竺嫣砑幽J(rèn)值。
<?PHP function doHello($Name = "hgci.cn") { return "Hello $Name!\n"; } doHello(); doHello("PHP"); doHello("hgci.cn"); ?>
考慮這個(gè)功能:
function doHello($FirstName, $LastName = "Smith") { }
只有 $ LastName
獲取默認(rèn)值。 提供默認(rèn)值兩個(gè)參數(shù)的值,我們必須分別定義它們。
<?PHP function doHello($FirstName = "java2s", $LastName = ".com") { return "Hello, $FirstName $LastName!\n"; } doHello(); doHello("java2s", ".com"); doHello("Tom"); ?>
對于單個(gè)參數(shù),PHP將假設(shè)您提供的參數(shù)是名字,因?yàn)樗鼜淖蟮接姨畛淦鋮?shù)。
我們不能將默認(rèn)值放在非默認(rèn)值之前。以下代碼是錯誤的。
function doHello($FirstName = "Joe", $LastName) { }
下面的代碼顯示了如何創(chuàng)建一個(gè)帶有可選參數(shù)的函數(shù)。
<?php function calcSalesTax($price, $tax="") { $total = $price + ($price * $tax); echo "Total cost: $total"; } calcSalesTax(42.00); ?>
上面的代碼生成以下結(jié)果。
具有可變長度參數(shù)列表的函數(shù)可以采用盡可能多的參數(shù)作為用戶的需要。
我們可以使用三個(gè)函數(shù)來做一個(gè)函數(shù)句柄變長參數(shù)。
func_num_args()
func_get_arg(), and
func_get_args()
func_num_args()
和 func_get_args()
不帶參數(shù)。
func_num_args()
gets the number of arguments passed into your function.
func_get_arg()
gets the value of an individual parameter.
func_get_args()
returns an array of the parameters that were passed in.
這里舉個(gè)例子:
<?PHP function some_func($a, $b) { for ($i = 0; $i < func_num_args(); ++$i) { $param = func_get_arg($i); echo "Received parameter $param.\n"; } } function some_other_func($a, $b) { $param = func_get_args(); $param = join(", ", $param); echo "Received parameters: $param.\n"; } some_func(1,2,3,4,5,6,7,8); some_other_func(1,2,3,4,5,6,7,8); ?>
上面的代碼生成以下結(jié)果。
下面的代碼顯示了如何create函數(shù)具有可變數(shù)量的參數(shù)。
<?php function makeList() { print("<ol>\n"); for($i=0; $i < func_num_args(); $i++) { print("<li>" . func_get_arg($i) . "</li>\n"); } print("</ol>\n"); } makeList("Linux", "Apache", "MySQL", "PHP"); ?>
上面的代碼生成以下結(jié)果。
引用是指向PHP變量的指針。
創(chuàng)建引用變量的語法
$myRef = &$myVariable;
我們有兩種方法來讀取或更改變量的內(nèi)容。我們可以使用變量名,或者可以使用引用。
這里是一個(gè)創(chuàng)建對變量的引用的簡單示例:
<?PHP $myVar = 123; $myRef = &$myVar; $myRef++; echo $myRef . "\n"; // Displays "124" echo $myVar . "\n"; // Displays "124" ?>
上面的代碼生成以下結(jié)果。
首先,使用值123初始化一個(gè)新變量$ myVar。接下來,創(chuàng)建對$ myVar的引用,并且引用存儲在變量$ myRef中。
注意等號后的&符號(&);使用此符號創(chuàng)建引用。
因?yàn)? myRef實(shí)際上指向相同的數(shù)據(jù)。下一行代碼為as的值添加一個(gè)$ myVar,$ myRef和$ myVar現(xiàn)在都包含值124。
要獲得一個(gè)函數(shù)來接受一個(gè)參數(shù)作為一個(gè)引用而不是一個(gè)值,在上面加一個(gè)&符號(&)函數(shù)定義中的參數(shù)名:
function myFunc( & $aReference ){ // (do stuff with $aReference) }
通過將對變量的引用作為參數(shù)傳遞給函數(shù),而不是變量本身,你通過參數(shù)通過引用,而不是值。
這意味著該功能現(xiàn)在可以更改原稿值,而不是處理副本。
參考參數(shù)
<?PHP function resetCounter( & $c ) { $c = 0; } $counter = 0; $counter++; $counter++; $counter++; echo "$counter\n"; // Displays "3" resetCounter( $counter ); echo "$counter\n"; // Displays "0" ?>
上面的代碼生成以下結(jié)果。
下面的代碼顯示了如何通過引用傳遞參數(shù)。
<?php $cost = 20.99; $tax = 0.0575; function calculateCost(&$cost, $tax) { // Modify the $cost variable $cost = $cost + ($cost * $tax); // Perform some random change to the $tax variable. $tax += 4; } calculateCost($cost, $tax); printf("Tax is %01.2f%% ", $tax*100); printf("Cost is: $%01.2f", $cost); ?>
上面的代碼生成以下結(jié)果。
更多建議: