通过引用传递或返回PHP中的数组?

cgw*_*cts 8 php pass-by-reference

我的所有函数都有多个参数,并且需要返回多个这些值,我返回的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
Run Code Online (Sandbox Code Playgroud)

与通过引用相比,这被认为是不好的做法,即;

function eg(&$a, &$b) {
    $a += 5;
    $b += 10;
}  
eg(0, 5);
echo $a; // 5
echo $b; // 10
Run Code Online (Sandbox Code Playgroud)

这真的很重要吗?在使用上述示例时,我何时想要使用其中一个?性能有什么不同吗?

谢谢

FtD*_*Xw6 8

正如大多数评论所指出的那样,第一种方法(返回数组)更清晰,更容易理解,因此通过该指标,它"更好".

但是,根据您的使用情况,最好不要尝试返回多个值.考虑:

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

$dim = $canvas->getDimensions();
echo $dim['width'], ' x ', $dim['height'];
Run Code Online (Sandbox Code Playgroud)

相比:

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

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

echo $canvas->getWidth(), ' x ', $canvas->getHeight();
Run Code Online (Sandbox Code Playgroud)

显然,这是一个人为的例子,但想象一下你的方法做了一些昂贵而不是轻浮的事情.现在假设您只需要第一组值,但由于您的方法为每次调用计算所有值,您必须浪费地计算所有内容并丢弃您不需要的内容.