2014-11-28 3 views
0

У меня есть массив:Не удается использовать ключ массива в том же массиве

$args = array(
    'n' => 10, 
    'd' => $args['n']*3, 
); 

Notice: Undefined variable: args in ...

Почему я не могу сделать что-н, как это?

Редактировать: Так должен ли я это делать?

$args = array(
    'n' => 10, 
); 
$args = array(
    'd' => $args['n']*3, 
); 

Это своего родом ужасно: P

+4

Вы вызываете массив перед его объявлением. –

+0

Что Ронак Патель грустно, решение состояло в том, чтобы сохранить 10 в переменной, а затем установить ее на n, а затем умножить на 3 и установить ее на d. – JKaan

+0

См. Мой обновленный вопрос. –

ответ

0

Это проблема курицы/яйцо:

$args = array(...); 

только возвращается и помещает новый массив в $ арга после ВСЕГО определения массива было разобрано выполнено. Поэтому, когда вы пытаетесь получить доступ к $ args в своем собственном определении массива, он пока не будет определен.

$args = array(0 => $args); 
        ^^^^^--undefined variable, not yet available for use. 
0

PHP сначала должен создать весь массив, и только после этого он может присвоить результат свойству $ args. Это означает, что, пока массив создается, значение $ args еще не установлено (или это то, что было ранее).

Вы должны либо установить элементы по одному:

$args = array('n' => 10); 
$args['d'] = $args['n'] * 3; 

Или сделать расчет вручную:

$args = array('n' => 10, 'd' => 10 * 3); 

Или так:

$a = 10; 
$args = array('n' => $a, 'd' => $a * 3); 
0

Вы получаете undefined variable error, потому что $args не определен в момент, когда вы пытаетесь использовать его внутри массива. Вы можете обойти эту проблему с временной переменной:

$args = array(
    'n' => ($n = 10), 
    'd' => $n * 3 
); 
Смежные вопросы