<1>函数参数传递方式三种
php " />

PHP中,函数的参数传递方式共有三种:值传递、引用传递和默认值传递。本文将重点讲解这三种参数传递方式,并选择三个数组统计函数作为案例,进行详细解析。

一、值传递

值传递指的是将参数的值复制一份后传递给函数,函数内部对参数的操作不会影响到原始值。示例代码如下:

```

function add($num) {

$num++;

return $num;

}

$a = 1;

$b = add($a);

echo $a; // 输出1

echo $b; // 输出2

```

在上面的代码中,我们定义了一个add函数,该函数的参数$num是以值传递方式传递到函数内部的。在函数内部,我们对$num做了自增操作,并返回了新的值。然后我们在函数外部,定义了变量$a,给其赋值为1。然后调用add函数,并将$a传递进去。add函数返回的值被我们赋值给变量$b,最后我们分别输出$a和$b。可以看到,$a的值并没有发生改变,$b的值是自增前的值加1。

二、引用传递

引用传递指的是将参数的内存地址传递给函数,函数内部对参数的操作会影响到原始值。示例代码如下:

```

function modify(&$arr) {

for($i=0;$i $arr[$i]++;

}

return $arr;

}

$a = array(1,2,3);

modify($a);

print_r($a); // 输出:Array ( [0] => 2 [1] => 3 [2] => 4 )

```

在上面的代码中,我们定义了一个modify函数,该函数的参数$arr是以引用传递方式传递到函数内部的。在函数内部,我们遍历数组,将每个元素都自增1。然后我们在函数外部,定义了变量$a,给其赋值为一个包含三个元素的数组。然后调用modify函数,并将$a的地址作为参数传递进去。modify函数返回的值是参数$a的新值,我们打印输出$a可以看到,每个元素的值都加了1。

需要注意的是,在PHP中,使用&符号来定义引用传递的参数,例如上面的代码中的(&$arr)。

三、默认值传递

默认值传递指的是给函数的参数设置默认值,调用函数时如果没有传入该参数,将使用其默认值。示例代码如下:

```

function demo($num=10,$str="hello") {

echo $num."\n";

echo $str."\n";

}

demo(); // 输出:10 hello

demo(5); // 输出:5 hello

demo(5,"world"); // 输出:5 world

```

在上面的代码中,我们定义了一个demo函数,该函数有两个参数$num和$str。我们给这两个参数分别设置了默认值10和"hello"。则在调用函数时,如果不传递参数,则使用默认值;如果传递了一部分参数,未传递的参数使用默认值。

选择三个数组统计函数作为案例,我们可以使用不同的参数传递方式来实现相同的功能。

1. count函数

函数原型:count ( mixed $array_or_countable , int $mode = COUNT_NORMAL ) : int

count函数用于统计数组中元素的个数。参数$array_or_countable可以是一个数组或一个可数实体(例如Countable接口实现类)。参数$mode可以取值为两个常量之一:COUNT_NORMAL(默认)和COUNT_RECURSIVE。当$mode的值为COUNT_RECURSIVE时,count函数将递归统计多维数组中的元素个数。

示例代码:

```

$a = array(1,2,3);

echo count($a); // 输出3

$b = array("a"=>array(1,2),"b"=>array(3,4,5));

echo count($b,COUNT_RECURSIVE); // 输出7

```

在上面的代码中,我们分别使用count函数统计了一个一维数组和一个二维数组中的元素个数。可以看到,count函数的第一个参数使用了值传递方式,第二个参数使用了默认值传递方式。

2. array_sum函数

函数原型:array_sum ( array $array ) : float

array_sum函数用于计算数组中所有数值元素的和。参数$array必须是一个数组。

示例代码:

```

$a = array(1,2,3);

echo array_sum($a); // 输出6

```

在上面的代码中,我们使用array_sum函数求出了一个数组中所有元素的和。可以看到,参数$array采用了引用传递方式。

3. array_reduce函数

函数原型:array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] ) : mixed

array_reduce函数用于迭代数组,将数组中的每个值一次传递给回调函数$callback,最终得到一个值。参数$array必须是一个数组。参数$callback是用户自定义函数,必须接受两个参数($carry和$item),并返回一个值。$carry是返回值的累计器,$item是数组中的当前元素。可以选择为该函数传递一个初始值$initial,作为$carry的初始值。

示例代码:

```

$a = array(1,2,3,4,5);

function my_reduce($carry,$item) {

if($item%2==0) {

return $carry+$item;

} else {

return $carry;

}

}

echo array_reduce($a,"my_reduce",0); // 输出6

```

在上面的代码中,我们使用array_reduce函数遍历数组,计算数组中所有偶数元素的和。我们定义了一个自定义函数my_reduce作为$callback参数,并以0作为$initial参数的值。可以看到,参数$array采用了值传递方式,$callback采用了引用传递方式,$initial采用了默认值传递方式。

综上所述,PHP中函数的参数传递方式有三种:值传递、引用传递和默认值传递。在使用函数时,需要根据具体情况选择适合的传递方式。在本文中,我们以三个数组统计函数为案例,分别使用了不同的参数传递方式,并进行了对比解析。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(86) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部