引用參數(shù)的函數(shù)
引用參數(shù)的函數(shù)格式說明:
void funName(array &args)
相對(duì)于按值傳遞模式藻丢,并不會(huì)將父程序中的指定數(shù)值或目標(biāo)變量傳遞給函數(shù)尊残,而是把該數(shù)值或變量的內(nèi)存儲(chǔ)存區(qū)塊相對(duì)地址導(dǎo)入函數(shù)之中褥符。因此當(dāng)該數(shù)值在函數(shù)中有任何變動(dòng)時(shí)悯辙,會(huì)連帶對(duì)父程序造成影響才避。
注意:如果在函數(shù)的形參中使用“&“修飾的參數(shù)帆阳,在調(diào)用該函數(shù)時(shí)必須傳入一個(gè)變量給這個(gè)參數(shù)哺壶,而是不能傳遞一個(gè)值。
<?php
//使用常規(guī)參數(shù)傳值
function test($arg) {
$arg = 200; //在函數(shù)中改變參數(shù)$a的值為200
}
$var = 100; //在父程序中聲明一個(gè)全局變量$var蜒谤,初值為100
test($var); //調(diào)用test函數(shù)山宾,并將變量$var的值100傳給函數(shù)的參數(shù)$arg
echo $var; //輸出100。$var的值沒有變化
//使用“&”引用參數(shù)傳值
function test( &$arg ) {
$arg = 200; //改變參數(shù)$a的值為200,$arg是引用參數(shù)鳍徽,外部變量$var也被修改
}
$var = 100; //在父程序中聲明一個(gè)全局變量$var资锰,初值為100
test($var); //調(diào)用test函數(shù),并將變量$var的引用傳給函數(shù)的參數(shù)$arg
echo $var; //輸出200阶祭。$var的值在函數(shù)中修改變量$arg時(shí)被修改
例test.php
<?php
/*
* $a = 10;
*
* $b = &$a;
*
* $a = 400;
* $b = 800;
*
* 1. 只有在內(nèi)存中的變量绷杜, 才有地址
* 2. 有引用關(guān)系的兩個(gè)變量, 一個(gè)變濒募, 另一個(gè)就變鞭盟, 相當(dāng)于兩個(gè)是一個(gè)
*
*
* 如果在函數(shù)說明中, 有&出現(xiàn)瑰剃, 說明這個(gè)參數(shù)是一個(gè)引用參數(shù)齿诉, 你調(diào)用時(shí)傳參數(shù)時(shí), 就必須傳一個(gè)變量
*
*/
$a= 20;
function demo(&$a) {
$a = 100;
}
echo $a."<br>";
demo($a);
echo $a."<br>";