【发布时间】:2012-03-01 05:27:04
【问题描述】:
我的所有函数都有多个参数并且需要返回多个值,我返回一个array,就像这样......
function eg($a, $b) {
$a += 5;
$b += 10;
return array('a' => $a, 'b' => $b);
}
$no = eg(0, 5);
echo $no['a']; // 5
echo $no['b']; // 10
与通过引用传递相比,这是否被认为是不好的做法?
function eg(&$a, &$b) {
$a += 5;
$b += 10;
}
eg(0, 5);
echo $a; // 5
echo $b; // 10
这真的很重要吗?使用上面的示例时,我什么时候想使用其中一个?性能有区别吗?
谢谢
【问题讨论】:
-
因为这是一个观点,这个问题可能并不完全适合这个论坛,但我个人认为你上面的例子可能比通过引用传递更干净,做得更好,这有点懒惰,如果您的代码封装得很好,阅读它时很难看出为什么您的 $a 和 $b 值突然不同。我认为你的第一个例子,就个人而言,是要走的路。
-
对不起,我被另一位成员从另一个问题中问了这个问题。谢谢你的评论。我只是想知道是否根据这样做是好还是坏的做法来更改我的代码。但我知道第一个例子更容易理解。
-
No yes or no answer确实,我同意第一个例子更清楚,你的同事会感谢你的清晰。
-
谢谢@Wrikken。我知道这个问题含糊不清,但我不知道还能去哪里问!
-
根据你的真实代码应该做什么,接受参数并返回一个对象也是有意义的。或者,更好的是,将
eg()实现为类方法。在给出的示例中,这有点矫枉过正......但在实际应用中,这种方法可能更简洁。
标签: php pass-by-reference