由于函数是一段封闭的程序,因此很多时候程序员都需要向函数内传递一些数据来进行操作。
function函数名称(参数1,参数2){
算法描述,其中使用参数1和参数2;
}
下面以计算酒店房间住宿费总价为例进行讲解。
【例4.3】(实例文件:源文件\ch04\4.3.php)
<?php
function totalneedtopay($days,$roomprice){ // 声明自定义函数
$totalcost = $days*$roomprice; // 计算住宿费总价
echo "需要支付的总价:$totalcost"."元。"; // 输出住宿费总价
}
$rentdays = 3; //声明全局变量
$roomprice = 168;
totalneedtopay($rentdays,$roomprice); //通过变量传递参数
totalneedtopay(5,198); //直接传递参数值
?>
运行结果如图4-3所示。
【案例分析】
(1)以这种方式传递参数值的方法就是向函数传递参数值。
(2)其中function totalneedtopay($days,$roomprice){}定义了函数和参数。
(3)无论是通过变量$rentdays和$roomprice向函数内传递参数值,还是像totalneedtopay(5,198)这样直接传递参数,值都是一样的。
4.2.3 向函数传递参数引用
向函数传递参数引用其实就是向函数传递变量引用。参数引用一定是变量引用,静态数值是没有引用一说的。由于在变量引用中已经知道,变量引用其实就是对变量名的使用,是对特定的变量位置的使用。
下面仍然以计算酒店服务费总价为例进行讲解。
<?php
$fee = 300;
$serviceprice = 50;
function totalfee(&$fee,$serviceprice){// 声明自定义函数,参数前多了&,表示按引用传递
$fee = $fee+$serviceprice; // 改变形参的值,实参的值也会发生改变
echo "需要支付的总价:$fee"."元。";
}
totalfee($fee,$serviceprice); //函数外部调用fun()函数前$fee =300
totalfee($fee,$serviceprice); //函数外部调用fun()函数后$ fee =350
?>
运行结果如图4-4所示。
【案例分析】
(1)以这种方式传递参数值的方法就是向函数传递参数引用。使用“&”符号表示参数引用。
(2)其中function totalfee(&$fee,$serviceprice){}定义了函数、参数和参数引用。变量$fee是以参数引用的方式进入函数的。当函数的运行结果改变了变量$fee的引用时,在函数外的变量$fee的值也发生了改变,也就是函数改变了外部变量的值。