php存储数组在数组中的引用

时间:2013-01-23 04:18:20

标签: php

我有以下问题。有一些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}}

4 个答案:

答案 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;

此代码仅为值引用,不是地址引用。