【发布时间】:2016-06-13 16:39:24
【问题描述】:
我看到很多这样的代码:
function load_items(&$items_arr) {
// ... some code
}
load_items($item_arr);
$v = &$items_arr[$id];
对比代码如下:
function load_items() {
// ... some code
return $items_arr;
}
$item_arr = load_items();
$v = $items_arr[$id];
第二个代码是否会复制items_arr 和$item_arr[$id]?
第一个代码导入性能好吗?
【问题讨论】:
-
.......什么?
-
@dbf 我只是听别人说,我觉得这太不可思议了
-
你的问题不是很清楚,至少可以这么说。通过在变量前面加上&符号
&,您通过引用将其传递给函数,变量需要首先定义,然后由您的函数修改 -
@aron9forever - 不,你可以返回任何东西,因为该语言基本上复制了
C,但他们没有让它返回一个数组,只返回最常见的数据结构和 PHP 流行的原因.</sarcasm> -
@roger - 不,不要始终使用
&。这样做不会使您的程序更快或更慢,但您可能会遇到意外行为。 PHP 足够聪明,不会将整个数组按值传递给函数,您不必为此使用&。此复制将在修改您传递的数据时发生,对象除外。 Read this answer please 不要无缘无故做你想做的傻事。
标签: php