在 php 中默認是按照值傳遞參數的,而且 函數的參數也屬于局部變量,所以即使在函數內部改變參數的值,它并不會改變函數的外部的值。上一節介紹了php中常規參數函數和偽類型參數函數。這一節來談談怎么引用參數,當函數為子程序時,調用函數的程序可以稱為父程序。父程序直接傳遞指定的值或變量給函數使用。由于所傳遞額值或者變量與函數里的數值分別存儲于不同的內存區塊,所以如果函數對所導入的數值做了任何變動,并不會對父程序直接造成影響。
php引用參數的函數格式說明如下所示:
void funName(array &arg) // 在參數列表中出現使用 &描述的參數
下面通過一個實例來對php引用參數進行說明:
<?php //聲明一個函數作為測試 function test($a){ $a = 200; // 函數中改變參數值為200 } $b = 100; // 父程序中聲明一個html' target='_blank'>全局變量$b并給一個初始值100 test($b); // 調用test函數 將100傳給函數的參數 echo $b; // 輸出100 $b的值沒變化?>
在上面的實例中,調用 test()函數時,將全局變量$b 的值傳給 函數 test()。雖然在 test()函數中對變量 $a 指定了新的值200,但是并不能改變函數外變量 $b 的值。 調用 test()函數結束以后,變量 $b輸出的值仍為100。如果希望允許函數修改它的參數值,則必須通過引用傳遞參數。
相對于按值傳遞模式,并不會將父程序中的指定數值或者目標變量傳遞給函數,而是把該數值或者變量的內存存儲區塊相對地址導入函數之中。因此,當該數值在函數中有任何的變動時,會連帶對父程序造成影響。如果想要函數的一個參數總是通過引用傳遞,則在函數定義中,在參數的前面預先加上符號 & 即可。
把前面的實例修改一下:
<?php //聲明一個函數作為測試 function test(&$a){ $a = 200; // 函數中改變參數值為200,加使用 & 引用參數$a,外部變量被修改 } $b = 100; // 父程序中聲明一個全局變量$b并給一個初始值100 test($b); // 調用test函數 將變量$b的引用傳給函數的參數$a echo $b; // 輸出200 $b的值在函數中修改變量$a時被修改?>
在上面的實例中,調用 test()函數時,不是將全局變量$b 的值傳給 函數 test()??梢钥吹?,在test()函數的定義中,使用了引用符號 & 指定變量$a 為按引用傳遞方式。在函數體中對變量$a 指定了新的值200,由于按引用方式會修改外部數據,所以外部變量$b 的值也一起被修改。函數調用結束以后,可以看到變量$b 的輸出值為200。
注意:如果在函數的形參中有使用 & 修飾參數。則在調用該函數時就必須傳入一個變量給這個參數,而不能傳遞一個值。
【相關教程推薦】
1. 《VeVb.com獨孤九賤(4)-php視頻教程》
2. php編程從入門到精通全套視頻教程
3. php實戰視頻教程
以上就是php函數之引用參數函數的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答