1

我想写一个条件,我想知道我的函数是否需要返回值,或者它可以作为过程执行。基本上它应该看起来像:

foo($x) {
    $x++;
    echo $x;
    if(is_return_needed()) {
        return $x;
    }
}

其中 is_return_needed() 是需要返回值的条件。

以及它应该如何工作:

echo foo(50); // should print AND return 51
bar(foo(50)); // should print AND return 51 to bar() function
foo(50); // should only print the value, because the returned value will not be used

请不要告诉我没有理由这样做。我知道我可以向函数发送一个额外的布尔参数,这将是条件,但有没有更好的方法来实现这一点?

4

1 回答 1

1

返回一个对象(或一个大字符串),PHP不会复制该对象/字符串。这意味着单独返回不会减慢您的申请速度。我找到了一篇解释得很好的文章。

如果函数可以完全避免构建这个大对象,它会变得更快。如果你在外面改变函数的结果,或者在返回之前改变它,它会变慢(那就必须做复制)。构建一个总是添加一小部分的长字符串非常昂贵,因为每次它都必须分配一个新的大内存块。

也就是说,我们必须查看您的代码才能了解您描述的减速。有时只返回结果是一个非常糟糕的建议,每个使用您的代码的开发人员都很难理解这种行为。如果您经常使用它,您的应用程序迟早会变得不稳定。实际上,我发现返回混合类型的值甚至很危险,因为 PHP 经常这样做。

于 2012-09-04T19:35:57.843 回答