构建数组时获取key的值

时间:2011-06-08 18:39:22

标签: php arrays multidimensional-array

我有一个如下所示的数组:

$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',
    ),
),
);

如果你注意到行'控制器',我想要设置 $ widgets ['ka'] ['settings'] ['ka_type'] 的值进入价值。

无论如何,我可以在我正在构建的数组中引用键的值吗?

3 个答案:

答案 0 :(得分:1)

您不能在值存在之前引用它。为临时变量赋值,然后在两个地方使用它。

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

答案 1 :(得分:0)

不,但您可以分配设置=> ka_type =>烧烤之前控制器?

答案 2 :(得分:0)

如果你不首先将值保存到变量那么你就可以做到这一点。

在两个步骤上保存数组。

$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';

或者,如果不仅仅是Ka,你可以像

一样循环
$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';
}

希望有所帮助