PHP变量声明或函数"召回"

时间:2015-04-16 11:30:50

标签: php function variables

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

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

示例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是否也正确。

1 个答案:

答案 0 :(得分:1)

这取决于您的应用和规模。基本上,强烈建议忽略琐碎的性能优化,以提高可读性,可伸缩性和可维护性。但是有些情况下你可能会迭代1000次,如果忽略某些标准,那么成本会很高。

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

因此,

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

优于

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

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

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

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

在线基准测试表明,foreach比for循环更快,我不确定并邀请您对其进行研究。