PHP函数参数

PHP 支持按值传递参数(默认),通过引用传递参数以及默认参数。也支持可变长度参数列表。
 
问题:
1、PHP参数传值和传引用的区别:
传值:在函数内部改变参数的值,它并不会改变函数外部的值。
传引用:函数可以修改函数外部的参数值。&表示这是一个传引用的参数,只是一个标志而已。
举例:
function add_some_extra(&$string)
{
$string .= 'and something extra.';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str; // outputs 'This is a string, and something extra.'

 

2、如果有多个参数,有些带有默认参数,有些没有默认参数怎么办?
使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则,函数将不会按照预期的情况工作。这和C++的设计一致。
举例:
  function makeyogurt($param2, $param1= "acidophilus") 
 
3、如何限制参数类型?
类型声明允许函数在调用时要求参数为特定类型。 如果给出的值类型不对,那么将会产生一个错误。
function test(boolean $param) {}
可是,弱类型语言PHP允许自动将integer类型的参数转换成string类型,这就不得不使用文件严格类型模式了。
在严格模式中,只有一个与类型声明完全相符的变量才会被接受,否则将会抛出一个TypeError。
注意:这种严格模式仅限于标量参数,也就是严格模式只能在PHP7中使用。
<?php
declare(strict_types=1);
function sum(int $a, int $b) {
return $a + $b;
}
var_dump(sum(1, 2));
var_dump(sum(1.5, 2.5));
?>
 
4、如何定义可变长度参数列表,如何获取参数?
PHP5.5-:
func_num_args()可以计算参数个数。func_get_arg(arg_num),arg_num表示参数偏移量,从0开始计数。func_get_args()以数组形式获取参数列表。
PHP5.6+:
在PHP 5.6及更高版本中,参数列表可能包括“...”,以表示函数接受可变数量的参数。参数将作为数组传递到给定的变量中。
举例1(5.5):
function sum( $a, $b) {
echo func_num_args();//2
echo func_get_arg(0);//1
dump (func_get_args());//[0=>1,1=>2]
echo func_get_args()[0];//1
return $a + $b;
}
sum(1,2);
举例2(5.6):
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
注:由于版本原因没有做检查
 

转载于:https://www.cnblogs.com/cquptzzq/p/8494036.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值