PHP中的按引用传递还是返回数组?

PHP中的按引用传递还是返回数组?,php,pass-by-reference,Php,Pass By Reference,我的所有函数都有多个参数,并且需要返回其中多个值,我会返回一个数组,就像这样 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 与通过引用ie相比,这被认为是不好的做法 function eg(&$a, &$b) {

我的所有函数都有多个参数,并且需要返回其中多个值,我会返回一个
数组
,就像这样

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
与通过引用ie相比,这被认为是不好的做法

function eg(&$a, &$b) {
    $a += 5;
    $b += 10;
}  
eg(0, 5);
echo $a; // 5
echo $b; // 10
这真的重要吗?在使用上述示例时,我什么时候希望使用一个而不是另一个?性能有什么不同吗


谢谢

正如大多数评论所指出的,第一种方法(返回数组)更干净、更容易理解,因此根据这个标准,它“更好”

不过,根据您的用例,最好不要尝试返回多个值。考虑:

public function getDimensions() {
    return array(
        'width' => $this->_width,
        'height' => $this->_height
    );
}

$dim = $canvas->getDimensions();
echo $dim['width'], ' x ', $dim['height'];
与之相比:

public function getWidth() {
    return $this->_width;
}

public function getHeight() {
    return $this->_height;
}

echo $canvas->getWidth(), ' x ', $canvas->getHeight();

显然,这是一个人为的例子,但是想象一下,您的方法做了一些昂贵的事情,而不是琐碎的事情。现在想象一下,您只需要第一组值,但由于您的方法为每次调用计算所有值,因此您必须浪费时间计算所有值,并丢弃不需要的值。

因为这是一种观点,这个问题可能并不完全适合本论坛,但就我个人而言,我想说你上面的例子可能比通过引用传递更干净,做得更好,因为引用有点懒,如果你的代码封装得好,阅读时就很难理解为什么你的$a和$b值突然不同。我个人认为,你的第一个例子就是要走的路。很抱歉,另一个问题的另一位成员告诉我要问这个问题。谢谢你的评论。我只是想知道是否要修改我的代码,这取决于这样做是好是坏。但我明白第一个例子更容易理解。没有是或否答案的确,我同意第一个例子更清晰,你的同事会感谢你的清晰。谢谢@Wrikken。我知道这个问题很模糊,但我不知道还能问到哪里!根据实际代码应该做什么,接受参数并返回对象也是有意义的。或者,更好的方法是将
eg()
实现为类方法。在给出的示例中,这是一种过分的做法。。。但在现实世界的应用程序中,这种方法可能更干净。