PHP:自引用数组

时间:2012-04-27 21:44:21

标签: php reference

有没有办法从数组中引用数组键?这在代码格式中可能更有意义:

$array=array(
  "Key1"=>array(
    "Value1",
    "Value2"
  ),
  "Key2"=>&$this['Key1']
);

我想要的是$array['Key2']输出与$array['Key1']相同的内容。创建数组后,我可以添加$array['Key2']=&$array['Key1'];,但如果可能的话,我希望将它全部保存在一个代码块中。

我已经检查过参考文档,以及一些建议类似的问题,并搜索“php数组引用”。

2 个答案:

答案 0 :(得分:29)

事实证明,答案是肯定的。然而,它不是一个整洁的语法,因为它使用一种子语句,并使当前范围散落着额外的引用变量。

请考虑以下代码:

<?php

  $array = array(

    // Creates Key1 and assigns the value to it
    // A copy of the value is also placed in $ref
    // At this stage, it's not a reference
    "Key1"=>($ref = array(
      "Value1",
      "Value2"
    )),

    // Now Key2 is a reference to $ref, but not to Key1
    "Key2"=>&$ref,

    // Now everything is referenced together
    "Key1"=>&$ref

  );

我很惊讶这种方法没有错误,但确实如此 - here's the proof。当然,你不会这样做,但你可以......

答案 1 :(得分:0)

无法在一个区块中进行,因为您尚未初始化变量。与类变量相同。要做这样的事情,你需要以任何方式创建任何变量,而不仅仅使用它的链接,但它使用内存,所以再一次,真正回答你的问题是 - 不可能:)