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