【问题标题】:PHP possible to initial array with value from same array?PHP可以使用来自同一数组的值初始化数组吗?
【发布时间】:2011-10-12 00:59:59
【问题描述】:

我想将当前路径信息保存在一个数组中,并且一个字段是另一个字段的一部分。初始化时可以访问同一个数组的字段吗?

$this->path = array
(
     'rel_image' => '/images',
     'document_path' => '/a/file/path',
     'path' => $this->path['document_path'].$this->path['rel_images']
);

还是我必须一一初始化?

【问题讨论】:

    标签: php arrays path initialization self-reference


    【解决方案1】:

    当您定义它时,该数组仍然是未定义的。但是,您可以动态定义其他(临时)变量:

    $this->path = array
    (
         'rel_image' => $r = '/images',
         'document_path' => $p = '/a/file/path',
         'path' => $p.$r
    );
    

    但是,通常不需要这样做,因为您正在复制数组中的数据。只是说,你可以为所欲为:)

    【讨论】:

      【解决方案2】:

      你必须一一初始化它们。

      最好将array 视为构造函数。在函数调用完成之前,数组本身并不完全存在,并且您无法访问在大多数情况下不完全存在的东西。

      【讨论】:

      • 函数调用?构造函数的?
      • 嗯,array 是一个返回数组的函数。但它就像一个构造函数,它返回一个初始化的对象。但它是……array 很特别。
      【解决方案3】:

      是的,你必须一个一个地初始化,因为 $this->path 是在 array() 函数完成后被填充的。

      【讨论】:

        【解决方案4】:

        据我所知,您尝试执行的任务不是功能性任务。

        代码:

         <?php $array = array('foo' => 'bar', 'bar' => $array['foo']); ?>
         <pre><?php print_r($array); ?></pre>
        

        ...呈现以下内容:

        Array
        (
            [foo] => bar
            [bar] => 
        )
        

        由于数组是一次创建的,而不是每个元素一次创建,因此它无法引用与赋值相同的语句中的值。

        【讨论】:

          猜你喜欢
          • 2014-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多