1

我是 php 的初学者,我很难理解返回值在 php 中的含义。到目前为止,我的理解是这样的:一旦你返回一个值,这就是函数将保存的最终值,并且在函数中返回一个值之后(以及函数结束之前)发生的所有脚本都将被终止。

我打印的第一个脚本是我从书中看到的。我认为我们可以将第一个脚本重写为第二个脚本,我看不出脚本之间有任何区别。

我对返回值的理解和我对以下两个脚本完全相同的想法是否错了?我试图尽可能多地阅读有关返回值的内容,但似乎没有什么能对我解释得足够清楚。我想真正了解必须返回一个值的意义何在,以及为什么我们不只使用脚本#2 而不是#1。我会很感激你的帮助。谢谢你。

脚本 1:

function addNums($firstnum, $secondnum){
    $result= $firstnum + $secondnum;
    return $result;
}
echo addNums(3,5);

脚本 2:

function addNums($firstnum, $secondnum){
    return $result= $firstnum + $secondnum;
}
echo addNums(3,5);
4

4 回答 4

5

更好的方法是

function addNums($firstnum, $secondnum){
    return  $firstnum + $secondnum;
}
于 2013-03-21T15:00:54.833 回答
3

我想我更喜欢这个

function addNums() {
    return array_sum(func_get_args());
}

或更好仍在使用bc_maths

function addNums() {
    return array_reduce(func_get_args(), function ($a, $b) {
        return bcadd($a, $b);
    });
}
于 2013-03-21T15:01:58.500 回答
3

我建议您从最佳实践开始您的编码之旅:

明确优先级。

换句话说,请随意使用括号。它们可能有助于澄清您想要的操作顺序,并且不会受到伤害。

代替:

return $result= $firstnum + $secondnum;

您可能想使用:

return ($firstnum + $secondnum); // The $result = is just unnecessary complication

, 在返回行中输入复杂表达式时使用括号。在您在这里的情况下,这实际上不是必需的,但可以帮助您避免将来出现问题。

这是一个更好的例子,你肯定想依靠括号来澄清你的数学:

return (($firstnum + $secondnum) / (4 - $thirdnum)); // or more complicated

所以本质上,你的 return 语句越复杂,你的括号就越多(直到你完全没有操作员的订单)。

但除此之外,将表达式放在返回行中都很好。这样做时您会遇到的一个问题是,您将无法像使用结果变量一样轻松地调试最终返回的值:

var_dump($result); // Can't echo out/var_dump the variable unless you've a temp variable to output
return $result;

但另一方面,这就是测试驱动设计和编写测试以确保获得预期结果的目的。

于 2013-03-21T15:04:14.743 回答
0

第二个脚本应遵循以下内容:

function addNums($firstnum, $secondnum){
    return ($firstnum + $secondnum);
}
echo addNums(3,5);
于 2013-03-21T15:00:56.843 回答