PHP 变量声明或函数 "recall"

PHP variable declarations or function "recall"

我遇到了关于变量和函数调用的非常基本的问题。我不知道如何命名这个问题,所以无法使用搜索找到任何答案...

那么这两个代码之间是否存在某种性能差异:

示例 1:

if($Page->getCurrentPage('id') == 1) {

    foreach($Page->getPagePosts() as $key => $pagePost) {
        include(PATH_TEMPLATES. "post.php");

        if(count($Page->getPagePosts()) - 1 > $key) {
            echo "<hr>";
        } 
    }
}

示例 2:

$arr = $Page->getPagePosts();
if($Page->getCurrentPage('id') == 1) {

    foreach($arr as $key => $pagePost) {
        include(PATH_TEMPLATES. "post.php");

        if(count($arr) - 1 > $key) {
            echo "<hr>";
        } 
    }
}

之前我用过例2,但是我开始思考例1是否也正确。

这取决于您的应用程序和规模。基本上,为了更好的可读性、可扩展性和可维护性,强烈建议忽略琐碎的性能优化。但在某些情况下,您可能会迭代 1000 次,如果您忽略某些标准,这将付出高昂的代价。

关于你的第一个例子,在小的情况下是可以的,但是在大的计算中,最好避免在任何类型的循环中调用函数,并且最好将数组传递给它们,因为会有没有功能开销。

因此,

foreach( $users as $user)
{
    //....
}

优于

foreach( $this->getUsers() as $user)
{
  // ....
}

但有些情况下你可以忽略这种严重性,例如,如果你的网站只有两个不同的标志,或者一个 table 中最多 5 条记录,你仍然可以坚持循环中的函数调用:

foreach( $this->siteLogos() as $logo )
{
  // ....
}

虽然我总是读到必须避免在 for 循环中使用 count()。

网上的benchmarks说foreach比for-loops快,这个我不太确定,请大家研究一下。