1

現在のパス情報を配列に保存したいのですが、あるフィールドが別のフィールドの一部です。初期化中に同じ配列のフィールドにアクセスできますか?

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

または、それらを1つずつ初期化する必要がありますか?

4

4 に答える 4

2

配列を定義している間、配列はまだ定義されていません。ただし、他の(一時)変数を定義して、その場で行うことができます。

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

ただし、配列内でデータを複製しているため、通常は必要ありません。ただ言って、あなたはあなたがやりたいことは何でもすることができます:)

于 2011-07-24T14:09:47.443 に答える
1

それらを1つずつ初期化する必要があります。

arrayコンストラクターとして考えるのが最善です。配列自体は、関数呼び出しが完了するまで完全には存在せず、ほとんどの状況で完全に存在しないものにアクセスすることはできません。

于 2011-07-24T14:02:33.130 に答える
0

はい、array()関数の実行後に$ this-> pathが入力されているため、1つずつ初期化する必要があります。

于 2011-07-24T14:02:29.203 に答える
0

私の知る限り、あなたがやろうとしている課題は機能的なものではありません。

コード:

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

...以下をレンダリングします:

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

配列は要素ごとに1回ではなく、一度に作成されるため、割り当てと同じステートメントで値を参照することはできません。

于 2011-07-24T14:06:35.200 に答える