引用參數的函數介紹
在php 中預設是依照值傳遞參數的,而且函數的參數也屬於局部變量,所以即使在函數內部改變參數的值,它並不會改變函數的外部的值。上一節介紹了php中常規參數函數和偽類型參數函數。這一節來談談怎麼引用參數,當函數為子程序時,呼叫函數的程式可以稱為父程式。父程式直接傳遞指定的值或變數給函數使用。由於所傳遞額值或變數與函數裡的數值分別儲存於不同的記憶體區塊,所以如果函數對所導入的數值做了任何變動,並不會對父程式直接造成影響。
php引用參數的函數格式說明如下所示:
void funName(array &arg) // 在参数列表中出现使用 &描述的参数
下面透過一個實例來對php引用參數進行說明:
<?php //声明一个函数作为测试 function test($a){ $a = 200; // 函数中改变参数值为200 } $b = 100; // 父程序中声明一个全局变量$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。
注意:如果在函數的形參中有使用 & 修飾參數。則在呼叫函數時就必須傳入一個變數給這個參數,而不能傳遞一個值。
【相關教學推薦】
3. php實戰影片教學
#以上是php函數之引用參數函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!