如何访问多维数组中的“值”键?

时间:2012-03-28 15:06:46

标签: php arrays wordpress meta-boxes

我在WordPress中创建多个元框,我希望用户能够打开或关闭某些框。

因此,他们单击一个单选按钮(在单独的元框中),更新选项,并且将显示附加到该无线电值的附加元框。

所以它基本上从一个元框(选择框)到两个元框(选择框,和他们刚选择的新框)。

在我的代码中,你可以通过设置这样的东西来创建一个元框(这是用户选择其他元框来打开/关闭的单选框):

// Create meta box that gives user ability to select additional meta box, 
// which will then show upon saving the post

$meta_boxes[] = array(
    'id' => 'meta_box_id',
    'title' => 'Box title',
    'pages' => array('page'),
    'context' => 'side',
    'priority' => 'low',
    'fields' => array(
        array(
            'name' => 'Select:',
            'id' => $prefix . 'meta_box_id',
            'type' => 'radio',
            'options' => array(
                array('name' => 'Value 1', 'value' => 'value_one'),
                array('name' => 'Value 2', 'value' => 'value_two'),
            )
        )
    )
);

以下是WordPress中的内容:

Box title in WordPress

这是另一个元框,一旦在上面的元框中选择(假设选择了value_one),将出现在帖子屏幕上:

// This meta box will only show if 'value_one' is selected from 
the radio box above

$meta_boxes[] = array(
    'id' => 'standard_lead',
    'title' => 'Standard Lead',
    'pages' => array('page'),
    'context' => 'normal',
    'priority' => 'high',
    'lead' => 'value_one',
    'fields' => array(
        array(
            'type' => 'text',
            'id' => $prefix . 'standard_title',
            'name' => 'Lead Title',
            'desc' => 'The title of your Standard Lead',
            'width' => '100'
        ),
        array(
            'type' => 'textarea',
            'id' => $prefix . 'standard_content',
            'name' => 'Lead Content',
            'desc' => 'The content of your Standard Lead (you can use HTML)',
            'width' => '100'
        )
    )
);

该代码的重要部分是:

'lead' => 'value_one',

我的计划是将['lead']值(来自上面的元框代码)与['value']值(来自无线电元框)匹配,这样它们就可以连接,然后测试使用IF语句确保它们等于同一个东西,然后仅在它们都等于value_one时显示。

下面的函数实际上是将元框添加到WordPress中。在该函数中,我尝试创建此IF语句以将这两者匹配在一起:

if($this->_meta_box['value'] == $this->_meta_box['lead'])

但它不起作用,我不确定如何定位['value'],因为它嵌套在多个数组中(或者我认为是问题)。

这是完整的功能:

function add_meta_boxes()
{
    $this->_meta_box['context'] = empty($this->_meta_box['context']) ? 'normal' : $this->_meta_box['context'];
    $this->_meta_box['priority'] = empty($this->_meta_box['priority']) ? 'high' : $this->_meta_box['priority'];

    foreach($this->_meta_box['pages'] as $page)
    {
        if($this->_meta_box['value'] == $this->_meta_box['lead'])
        {
            // adds meta box to WP
            add_meta_box($this->_meta_box['id'], $this->_meta_box['title'], array(&$this, 'show_meta_boxes'), $page, $this->_meta_box['context'], $this->_meta_box['priority']);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

要在PHP中访问多维数组值,请使用以下语法:

$arrayVar['key1']['key2'];

因此,要访问第一个数组中的“value”键,请执行以下操作:

$this->_meta_box['fields']['options'];
/* returns 
array(
  array('name' => 'Value 1', 'value' => 'value_one'),
  array('name' => 'Value 2', 'value' => 'value_two'),
);
*/
// to get the first option's value
$this->_meta_box['fields']['options'][0]['value'];
// to get the second option's value
$this->_meta_box['fields']['options'][1]['value'];