繁体   English   中英

用PHP返回引用

[英]Return a reference in PHP

我很难理解PHP的内存模型。

具体来说,我应该如何更改$fn以便$b引用$a ,并且var_dump打印一个非空数组?

$a = array();
$fn = function() use (&$a) {
    return $a;
};
$b = $fn();
$b['a'] = 1;
var_dump($a);

(更一般而言,您有关于何时/如何使用参考的推荐参考吗?)

编辑:其他语言中的示例,其中a变为非空。

蟒蛇:

a = {}
def fn():
    return a;
b = fn()
b['a'] = 1
print a

使用Javascript

var a = {};
var fn = function() {
   return a;
};
b = fn();
b['a'] = 1;
console.log(a);

像这样:

$a = array();
$fn = function &() use (&$a) {
    return $a;
};
$b = &$fn();
$b['a'] = 1;
var_dump($a);

第二行中的&()表示$fn应该返回引用,而第5行中的= &$fn()则表明$ b应该通过引用分配。

结果:

array(1) { ["a"]=> int(1) }

最简单的方法是使参数成为对象,因为对象总是通过引用传递。 在这种简单情况下,可以使用ArrayObject的实例。 我必须说,尽管您正在处理一个我从未遇到过的用例,或者这是您需要的应​​用程序结构设计中的根本缺陷。

<?php
$a = new ArrayObject(array());
$fn = function() use (&$a) {
    return $a;
};
$b = $fn();
$b["a"] = 1;
var_dump($a);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM