我有以下问题。有一些php行。
在$testArrayA
的var_dump中,test2
的“def”条目不存在,因为它已添加
将$testArrayB
添加到$testArrayA
后。
在我看来,在$testArrayB
中,$testArrayA
并未通过引用存储$testArrayA = [];
$testArrayB = [];
$testArrayB["ghi"] = "test1";
$testArrayA["abc"] = $testArrayB;
$testArrayB["def"] = "test2";
。我如何根据参考存储它,我需要做什么才能在var_dump中输入“def”?
非常感谢
array(1) {
["abc"]=>
array(1) {
["ghi"]=>
string(5) "test1"
}
}
var_dump:
{{1}}
答案 0 :(得分:7)
这只是通过引用传递的问题:
$testArrayA = [];
$testArrayB = [];
$testArrayB["ghi"] = "test1";
$testArrayA["abc"] = &$testArrayB;
$testArrayB["def"] = "test2";
的var_dump($ testArrayA);
array (size=1)
'abc' => &
array (size=2)
'ghi' => string 'test1' (length=5)
'def' => string 'test2' (length=5)
答案 1 :(得分:6)
使用:
$testArrayA["abc"] = &$testArrayB;
注意:强> 的
与C的指针不同,PHP中的引用是一种以不同的名称访问相同变量内容的方法。
答案 2 :(得分:1)
在php手册中
数组赋值始终涉及值复制。使用引用运算符通过引用复制数组。
答案 3 :(得分:0)
$testArrayA = null;
$testArrayB = null;
$testArrayB["ghi"] = "test1";
$testArrayA["abc"] = $testArrayB;
$testArrayB["def"] = "test2";
print_r($testArrayA);
echo ("<br>");
print_r($testArrayB);
Array ( [abc] => Array ( [ghi] => test1 ) )
Array ( [ghi] => test1 [def] => test2 )
'def'条目与'ghi'不同, 但它们都属于testArrayB。
$ testArrayA [“abc”] = $ testArrayB;
此代码仅为值引用,不是地址引用。