我的所有具有多个参数且需要返回多个参数值的函数我都会返回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
这真的很重要吗?在使用上述示例时,我何时想要使用其中一个?表现有什么不同吗?
由于
答案 0 :(得分:7)
正如大多数评论所指出的那样,第一种方法(返回数组)更清晰,更容易理解,因此通过该指标,它“更好”。
但是,根据您的使用情况,最好不要尝试返回多个值。考虑:
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();
这显然是一个人为的例子,但想象一下你的方法做了一些昂贵而不是轻浮的事情。现在假设您只需要第一组值,但由于您的方法为每次调用计算所有值,您必须浪费地计算所有内容并丢弃您不需要的内容。