[英]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.