簡體   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