当函数不必要PHP时,函数在循环内调用

时间:2014-06-26 14:56:12

标签: php

这可能是一个非常愚蠢的问题,但它仍然让我感到困惑。我倾向于使用这个:

$variable = $someObject->getSomeValue();

for ($i = 0; $i < $x; $i++) {
   performSomeFunction($variable);
}

我见过人们做以下事情&amp;我的一些同事正在和我争辩说,如果我在循环中使用函数调用,那么性能没有差别。它将节省1行代码。

for ($i = 0; $i < $x; $i++) {
    performSomeFunction($someObject->getSomeValue());
}

现在$x = 10这可能对性能没有影响,但如果$x = 10000怎么办?哪一个是PHP和编程通用中的首选方法或最佳实践?

函数getSomeValue

的示例
// just a getter method for the class
function getSomeValue() {
   return $this->userFirstName;
}

3 个答案:

答案 0 :(得分:4)

很大程度上取决于你的功能。例如这个

function() {
  return 2;
}

没关系。

为此:

function() {
  $pdo->query('SELECT ....');
  // more db stuff
  return $someDbStuff;
}

非常重要!

答案 1 :(得分:1)

取决于您在$someObject->getSomeValue();上执行的操作。如果只返回一个变量,它对性能没有任何影响,另一方面,如果你从数据库中检索数据,那么避免它就非常重要。

然而,它总是一个很好的政策,以避免不必要的迭代,并像这样做

$variable = $someObject->getSomeValue();

for ($i = 0; $i < $x; $i++) {
   performSomeFunction($variable);
}

答案 2 :(得分:1)

是的,确定性能会受到影响。 如果您要在迭代循环上使用相同的值,为什么每次都要使用它? 最好在循环之前获取它(如果在循环中没有机会更改此值)然后重复使用它。

想象一下,这个getSomeValue()需要访问数据库或web服务,你宁愿做一次还是$ x次以获得相同的效果?