Получить значение ключа при построении массива - PullRequest
0 голосов
/ 08 июня 2011

У меня есть массив, который выглядит так:

$widgets = array(
'ka' => array(
    'name'       => 'Kool-Aid',
    'active'     => true,
    'priority'   => 10,
    'primacy'    => 30,
    'controller' => 'KoolAid'.$widgets['ka']['settings']['ka_type'].'Widget',
    'settings'   => array(
        'ka_type'   => 'BBQ',
    ),
),
);

Если вы заметили в строке 'controller' , я хочу поместить значение $ widgets ['ka'] ['settings'] ['ka_type'] в значение.

В любом случае можно ли ссылаться на значение ключа в массиве, который я сейчас создаю?

Ответы [ 3 ]

1 голос
/ 08 июня 2011

Вы не можете ссылаться на значение, пока оно не существует. Присвойте значение временной переменной, а затем используйте ее в обоих местах.

$kaType = 'BBQ';
$widgets = array(
'ka' => array(
    'name'       => 'Kool-Aid',
    'active'     => true,
    'priority'   => 10,
    'primacy'    => 30,
    'controller' => 'KoolAid'.$kaType.'Widget',
    'settings'   => array(
        'ka_type'   => $kaType,
    ),
),
);
0 голосов
/ 08 июня 2011

Хорошо, если вы не хотите сначала сохранить значение в переменную, тогда вы можете сделать это.

сохранение массива в 2 этапа.

$widgets = array(
'ka' => array(
    'name'       => 'Kool-Aid',
    'active'     => true,
    'priority'   => 10,
    'primacy'    => 30,
    'controller' => '',
    'settings'   => array(
        'ka_type'   => 'BBQ',
    ),
),
);
$widgets['ka']['controller'] = $widgets['ka']['settings']['ka_type'].'Widget';

ИЛИ если есть больше, чем просто Ка, вы можете зациклить его как

$widgets = array(
'ka' => array(
    'name'       => 'Kool-Aid',
    'active'     => true,
    'priority'   => 10,
    'primacy'    => 30,
    'controller' => '',
    'settings'   => array(
        'ka_type'   => 'BBQ',
    ),
),
);

Foreach($widgets as $name=>$val){
     $widget[$wid]['controller'] = $val['settings']['ka_type'].'Widget';
}

Надеюсь, это поможет

0 голосов
/ 08 июня 2011

Нет, но вы можете назначить настройки => ka_type => BBQ до контроллера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...