Возможно ли PHP в исходный массив со значением из того же массива? - PullRequest
1 голос
/ 24 июля 2011

Я хочу сохранить информацию о текущем пути в массиве, и одно поле является частью другого.Могу ли я получить доступ к полю того же массива во время инициализации?

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

или мне нужно их инициализировать по одному?

Ответы [ 4 ]

2 голосов
/ 24 июля 2011

Массив все еще не определен, пока вы его определяете.Однако вы можете определить другие (временные) переменные для этого на лету:

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

Однако это обычно не требуется, поскольку вы дублируете данные в массиве.Просто скажу, что ты можешь делать все, что захочешь:)

1 голос
/ 24 июля 2011

Вы должны инициализировать их один за другим.

Лучше всего думать о array как о конструкторе. Сам массив полностью не существует до тех пор, пока не завершится вызов функции, и вы не сможете получить доступ к чему-то, чего не существует в большинстве случаев.

0 голосов
/ 24 июля 2011

Насколько я знаю, задание, которое вы пытаетесь выполнить, не является функциональным.

Код:

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

... отображает следующее:

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

Поскольку массив создается за один раз, а не один раздля каждого элемента он не сможет ссылаться на значения в том же операторе, что и присвоение.

0 голосов
/ 24 июля 2011

да, вы должны инициализировать одну за другой, потому что $ this-> path заполняется после выполнения функции array ().

...