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快,这个我不太确定,请大家研究一下。
我遇到了关于变量和函数调用的非常基本的问题。我不知道如何命名这个问题,所以无法使用搜索找到任何答案...
那么这两个代码之间是否存在某种性能差异:
示例 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快,这个我不太确定,请大家研究一下。