PHP 函数参数怎么传

在写 PHP 代码时,很多刚接触的朋友常搞不清“参数怎么传”——明明照着教程写,要么报错,要么运行结果不对。其实参数的传递就像生活里递东西,不同递法对应不同用法,弄明白这一点,就再也不会懵了。

先搞懂:什么是函数参数?

简单说,函数是“一个能完成特定任务的工具”,比如你想做一个“给名字加前缀的工具”,这个工具需要你给它一个具体的名字(比如“小明”),它才能输出“你好,小明”。这个“名字”就是参数,是你给工具的“原材料”。

PHP 函数参数怎么传

举个生活化的例子:你煮泡面时,“煮面”是个函数,你得给它“面饼”和“水”这两个参数,不然它没法工作。参数就是函数和你之间的“约定输入”,没按约定给,就会出问题。

最基础的传法:值传递(最常用)

值传递,就是你给函数的是“原材料本身的拷贝”,不管函数怎么改这个拷贝,都不会影响你原来的东西。

比如写一个简单的 PHP 函数,把数字加 10:

`php

function addTen($num) {

$num = $num + 10;

return $num;

}

$myNum = 5;

$result = addTen($myNum);

`

这里$myNum是 5,传给函数后,函数里的$num是 5 的拷贝,加 10 变成 15,返回给$result。但你会发现,原来的$myNum还是 5,没变——因为函数改的是拷贝,不是原变量。

就像你把自己的作业复印一份交给老师,老师在复印件上改对错,你的原件还是原样,这就是值传递。大部分时候,我们用这种传法就够了,安全又好理解。

特殊传法:引用传递(改原变量)

有时候你想让函数直接改你原来的变量,而不是改拷贝,这时候就要用引用传递。就像你直接把原件交给老师改,改完你的原件就变了。

在 PHP 里,只要在参数前加&符号,就是引用传递:

`php

function addTenByRef(&$num) {

$num = $num + 10;

}

$myNum = 5;

addTenByRef($myNum);

`

运行完这段代码,你会发现$myNum变成了 15——因为函数拿到的是原变量的“地址”,直接操作原变量。

这种传法要慎用,比如多人合作写代码时,不小心用了引用传递,可能会偷偷改了别的地方的变量,出问题都找不到原因,就像你把作业原件给老师,万一老师改多了,你自己也没备份。

还有两种:默认参数和可变参数

除了上面两种,PHP 还有两种实用的传法:

  • 默认参数:给参数设一个默认值,传的时候可以省略,适合参数常用值固定的情况。比如做一个问候函数,默认问候“你好”:

`php

function greet($name, $greet = "你好") {

return $greet . "," . $name;

}

echo greet("小明"); // 输出“你好,小明”,不用传第二个参数

echo greet("小红", "早安"); // 输出“早安,小红”,覆盖默认值

`

这就像煮泡面默认给你加开水,你想加冷水就自己说,不想说就用默认的。

  • 可变参数:如果不知道要传多少个参数,可以用...来接收,适合参数数量不固定的场景,比如算总和:

`php

function sum(...$nums) {

$total = 0;

foreach ($nums as $n) $total += $n;

return $total;

}

echo sum(1,2,3); // 输出6

echo sum(5,10); // 输出15

`

就像你去水果店买水果,老板说“你要几个就拿几个,我都算”,不用提前说死数量。

怎么选哪种传法?

新手记住三个原则:

没特殊需求就用值传递,不容易出bug;

只有确实需要改原变量时,才用引用传递;

固定常用值用默认参数,数量不定用可变参数。

多写几个小例子试试,比如写个计算商品折扣的函数,用值传递传原价,用默认参数设折扣率为0.9,很快就能摸透,不用死记硬背。

上一篇 C / C++ 编程语言的核心特性与应用场景全解析