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 に答える