如何使用和访问已保存的数组值

时间:2015-01-21 03:12:16

标签: php arrays wordpress foreach

我有一个PHP函数,它返回PHP list()格式的值。此函数返回一个WordPress分类法列表,其中包含一些手动添加的自定义条目。

/**
 * Returns array with taxonomies
 */
public function get_taxonomies(){
    $args = array(
        'public'    => true,
        '_builtin'  => false
    );
    $taxonomies = get_taxonomies($args, 'objects');
    $list = array();
    $list[__('Category', $this->prefix)] = 'category';
    $list[__('Tag', $this->prefix)] = 'post_tag';
    foreach($taxonomies as $tax){

        $list[$tax->labels->name] = $tax->name;
    }
    return $list;
}

此函数返回以下数组值:

Array
(
    [Category] => category
    [Tag] => post_tag
    [Product Categories] => product_cat
    [Product Tags] => product_tag
    [Shipping Classes] => product_shipping_class
)

数组的第一部分是分类法名称,第二部分是分类法值。

我将这些值显示为复选框列表,并将它们作为数组保存在我的数据库中。

这是我在数据库中保存的复选框列表数据。如果我print_r()列表的保存数据,则返回此内容:

Array
(
    [category] => category
    [post_tag] => post_tag
    [product_cat] => product_cat
)

使用WordPress checked()函数我试图返回初始的分类法列表,其中保存在数据库中的值标记为HTML"已选中"。

以下是我的尝试:

// This is where I am trying to get at the saved values
$multi_stored = $options[$id];

$taxonomies = $this->get_taxonomies();
foreach($taxonomies as $name => $label){

    $check_key = $id . '_' . $option;

    $output .= '<input class="checkbox'.$field_class.'" type="checkbox" name="'.$this->prefix.'_options['.$id.']['.$label.']" id="'.$check_key.'" value="'.$label.'" '.checked($multi_stored[$label], $label, false ).' /><label for="'.esc_attr($name).'">'.esc_html($name).'</label><br />';
}

当我运行此代码时,我收到了以下PHP警告。

  

注意:未定义的索引:C:\ xampp \ htdocs \ wpbp-admin.php中的product_tag在线...

它给了我关于未选中的复选框列表中每个项目的警告。

我希望代码不会返回这些警告。我知道这是使用isset的问题,但我不知道在哪里放置它。

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

我得到了它的工作。

我改为&#34; Checked&#34;循环中的函数:

$multi_stored = $options[$id];

$taxonomies = $this->get_taxonomies();
foreach($taxonomies as $name => $label){

    if(isset($multi_stored[$label])){
        if($label == $multi_stored[$label]){
            $checked = 'checked="checked"';
        } else {
            $checked = '';
        }
    } else {
        $checked = '';
    }

    $check_key = $id . '_' . $label;

    $output .= '<input class="checkbox'.$field_class.'" type="checkbox" name="'.$this->prefix.'_options['.$id.']['.$label.']" id="'.$check_key.'" value="'.$label.'" '.$checked.' /><label for="'.esc_attr($name).'">'.esc_html($name).'</label><br />';
}