不是,php傳參可以是字串、數字、布林值、陣列等。從PHP5.6版本開始支援傳遞陣列參數,函數的形式參數可使用「…」來表示函數可接受一個可變數量的參數,而可變參數將會被當作一個陣列傳遞給函數,語法「function函數名稱(...$arr){//執行程式碼}」。
本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦
PHP 自訂的函數
在PHP 中宣告一個自訂的函數可以使用下面的語法格式:
function 函数名 (参数1, 参数2, ..., 参数n){ 函数体; return 返回值; }
宣告函數時函數名稱後面的小括號「()」也是必須有的,在小括號中包含了一組可以接受的參數列表,參數就是宣告的變量,然後在呼叫函數時可以將變數傳遞給函數。參數清單可以為空,也可以有一個或多個參數,多個參數之間使用逗號分隔;
在PHP 中只要在需要使用函數的位置,使用函數名稱和參數清單進行函數調用:
函数名 (参数1, 参数2, ..., 参数n);
可以看出:函數的參數清單是由零個或多個參數組成的,每個參數之間使用逗號分隔開。
依參數所使用的位置,參數分為形式參數和實際參數兩種。
形式參數就是定義函數時函數名稱後面括號內的參數清單(簡稱「形參」),就像它的名字一樣,形參本身沒有具體的值。因為函數體中需要使用外部傳入的參數,為了讓參數可以正確地傳遞進來,就需要透過形式參數與函數體裡面的資料傳遞,形式參數如下圖所示。
實際參數就是我們在呼叫函數時函數名稱後面括號中的若干個參數(簡稱「實參」),實參與形參需要依序一一對應,它會取代形式參數在函數體中對應的變數值,函數的參數可以是一個具體的值,也可以是一個變量,實際參數如下圖所示。
php傳入
#在呼叫函數時,需要傳遞參數,被傳入函數的參數稱為實參,而函數定義的參數稱為形參。而傳遞參數給函數的方式有四種,分別是值傳遞、引用傳遞、預設參數、可變長度參數。
1、值傳遞
值傳遞是 PHP 中函數的預設傳值方式,也稱為「拷貝傳值」。顧名思義值傳遞的方式會將實參的值複製一份再傳遞給函數的形參,所以在函數中操作參數的值並不會對函數外的實參造成影響。因此如果不希望函數修改實參的值,就可以透過值傳遞的方式。
【範例】下方定義一個簡單的函數,函數有兩個參數,在函數中交換參數的值。
<?php function swap($a, $b){ echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>'; $temp = $a; $a = $b; $b = $temp; echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>'; } $x = 5; $y = 7; echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>'; swap($x, $y); echo '函数外,交换后 $x = '.$x.', $y = '.$y; ?>
運行結果如下:
2、引用傳遞
參數的引用傳遞就是把實參的記憶體位址複製一份,然後傳遞給函數的形參,實參和形參都指向同一個記憶體位址,因此函數對形參的操作,會影響到函數外的實參。
依引用傳遞就是將實參的記憶體位址傳遞到函數的形參中。因此實參和形參指向的是同一個記憶體位址。這時在函數內部的所有運算都會影響到函數外實參的值。引用傳遞的方式就是在值傳遞的基礎上加上一個&符號,如下所示:
function name (&参数1, &参数2, ..., &参数3) { ... }
【範例】將上面範例的程式碼略作調整,使用引用傳遞的方式向swap 函數中傳遞參數,程式碼如下:
<?php function swap(&$a, &$b){ echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>'; $temp = $a; $a = $b; $b = $temp; echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>'; } $x = 5; $y = 7; echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>'; swap($x, $y); echo '函数外,交换后 $x = '.$x.', $y = '.$y; ?>
運作結果如下:
3、預設參數
## 默認參數就是給函數的某個或多個形式參數指定一個預設的值,如果呼叫函數時不傳入對應的值,那麼函數就會使用這個預設值,這樣可以避免在呼叫時出現沒有參數的錯誤,也可以使一些程序顯得更加合理。如果傳入對應的參數,就會替換這個預設值。 函數的預設參數如下所示:function name ($str = 'hello', $url) { echo $str; }
=連接。
<?php function add($a, $b=56){ echo $a.' + '.$b.' = '.($a+$b).'<br>'; } add(11); add(37, 29); ?>
默认参数也可以是多个,而且默认参数必须放在非默认参数右边,并且指定默认参数的值必须是一个具体的值,如数字、字符串,而不能是一个变量。
4、可变长度参数--将一个数组传递给函数
在 PHP 5.6 及以后的版本中,函数的形式参数可使用…来表示函数可接受一个可变数量的参数,可变参数将会被当作一个数组传递给函数。示例如下:
<?php function test(...$arr){ var_dump($arr); } test(1, 2, 3, 4); test(5, 6, 7, 8, 9, 10); ?>
推荐学习:《PHP视频教程》
以上是php傳參都是字串嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!