在其他语言中,通常会有多个返回值。例如,在Lua中,可以这样写:
local _, _, r1, r2 = string.find(...)( _在lua中是“丢弃”返回值的常见做法)
在PHP中,我必须编写类似这样的代码:
list(, , $r1, $r2) = string_find(...);虽然在Lua中几乎到处都可以看到多个返回值的用法(几乎在每个程序中),但我在PHP中并不经常看到这种情况--除了while(list(...) = each(...)) { }示例。
对于多个返回值,特别是PHP中的多个返回值,您的看法是什么?是好的实践还是坏的代码?
谢谢!
发布于 2011-02-04 19:00:55
在PHP中使用多个返回值并没有错。至少如果你用得好的话。在某些情况下,它确实可以提供帮助(例如,通过这种有趣的方式返回元组可以)。
当然,在记录这类方法时必须小心。另外,如果你从一个方法中返回了20个值,那么这个方法就有问题了。但是,再说一次,它与PHP无关。
现在,为什么在PHP中不经常使用它呢?在我看来,因为大多数编写PHP程序的人都没有意识到这一点。
发布于 2011-02-04 18:59:38
在PHP中,更常见的做法是返回一个数组或对象,然后直接使用该数组或对象,而不是将所有值赋给单独的变量。
function get_preferences() {
return array('color' => 'red', 'size' => 'large', 'material' => 'cotton');
}
$prefs = get_preferences();
echo "We're sending you a " . $prefs['size'] . " shirt.";发布于 2011-02-04 19:01:22
为了说明这一点:“返回一个数组”与“返回多个值”不同。稍后的是根本不可能的。
我有时会将数组作为一种"tupel“返回,但在极少数情况下,这是必需的。在大多数情况下,函数/方法将返回特定值。
例如,您需要一个在给定索引处拆分字符串的函数。在本例中,我将返回一个数组
function my_split ($string, $index) {
return array(
substr($string,0, $index),
substr($string,$index)
);
}
list($start, $end) = my_split("Hello World", 5);https://stackoverflow.com/questions/4897166
复制相似问题