2

我有以下问题。有一些php行。

在 var_dump 中$testArrayA,“def”条目test2不存在,因为它是在$testArrayB添加到$testArrayA.

在我看来,就我而言,这$testArrayB不是通过引用存储在$testArrayA. 如何按引用存储它,我必须做什么才能在 var_dump 中有“def”条目?

非常感谢提前

$testArrayA = [];
$testArrayB = [];
$testArrayB["ghi"] = "test1";
$testArrayA["abc"] = $testArrayB;
$testArrayB["def"] = "test2";

var_dump:

array(1) {
  ["abc"]=>
    array(1) {
       ["ghi"]=>
       string(5) "test1"
      }
}
4

4 回答 4

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)
于 2013-01-23T04:25:34.337 回答
6

采用:

$testArrayA["abc"] = &$testArrayB;

笔记:

与 C 的指针不同,PHP 中的引用是一种通过不同名称访问相同变量内容的方法。

于 2013-01-23T04:25:33.423 回答
1

在php手册中

数组赋值总是涉及值复制。使用引用运算符通过引用复制数组。

于 2013-01-23T04:26:25.000 回答
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;

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

于 2013-01-23T04:36:50.090 回答