这可能是一个非常愚蠢的问题,但它仍然让我感到困惑。我倾向于使用这个:
$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;
}
答案 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次以获得相同的效果?