【问题标题】:Is it efficient to return an array in php?在php中返回数组是否有效?
【发布时间】:2014-08-21 22:43:53
【问题描述】:

我对 PHP 还很陌生;到目前为止,我的大部分编程经验都是用 C++ 编写的。所以,自然而然地,我开始关心效率。在 C++ 中,您永远不会在函数末尾返回对象或数组,但如果您需要数据,只需返回一个指针。

所以我的问题是:使用数组作为返回值是否会降低效率,还是 PHP 只是在后台使用指针而不显示方便?

【问题讨论】:

  • PHP中也可以通过引用传递。
  • 是的,它的效率很高,PHP 在后台使用引用,顺便问下好问题! +1
  • 对于开发来说,查看分析器图(然后最好是数据库查询)更有效,而不是事先担心性能细节而不是可读性。
  • @user2864740 实际上 PHP 会进行写时复制,结果是引用甚至比直接复制要慢。参见例如php.net/manual/en/internals2.variables.intro.phpschlueters.de/blog/archives/125-Do-not-use-PHP-references.html
  • @jeroen 感谢您的链接。我没有意识到它使用了 CoW。

标签: php arrays performance


【解决方案1】:

PHP 返回a reference if it's optimal for the interpreter to do so。通常,传递给函数的参数会被复制,尽管您通过引用传递参数并因此通过引用获得返回值,如下所示:

function blah(&$foo) {
  $foo = array();//or whatever
  //note no return statement
}

//elsewhere
$x = "whatever";
blah($x);
//$x is now an array.

由于&$foo 被视为引用,因此对该变量的修改被视为对引用的修改。

或者你可以强制函数返回一个引用:

function &blah() {
  //some stuff
  return $foo;//goes back as a reference
}

根据文档,除非您有非优化原因,否则不应该这样做。

也就是说,PHP 的效率并不高,担心这些问题通常为时过早——除非您发现代码中存在实际的性能瓶颈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 2020-04-25
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多