不是,php傳參可以是字串、數位、布林值、陣列等。從PHP5.6版本開始支援傳遞陣列引數,函數的形式引數可使用「…」來表示函數可接受一個可變數量的引數,而可變引數將會被當作一個陣列傳遞給函數,語法「function 函數名(...$arr){//執行程式碼}」。
php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:
本教學操作環境: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;
}
登入後複製
其中,形式引數 $str 後面的「hello中文網」就是它的預設值,形參與預設值之間需要使用=
連線。
【範例】下面來定義一個具有預設引數的函數,如下所示:
<?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傳參都是字串嗎的詳細內容,更多請關注TW511.COM其它相關文章!