如何比较WordPress管理中的两个复选框数组


How to compare two checkbox arrays in WordPress admin

我有一个前端表单提交给我的自定义帖子类型和里面的复选框。 <input type="checkbox" name="_my_checkbox[]" value="Yes"/> Yes <input type="checkbox" name="_my_checkbox[]" value="No"/> No <input type="checkbox" name="_my_checkbox[]" value="Maybe"/> Maybe

之后我把它保存为post-meta。然后我需要管理处理这些帖子和价值观。就我所尝试的而言,只完成了保存和操作一个值。我想问题出在数组中。在这里,它是显示元框的函数的一部分。

$get_my_meta = get_post_meta($post->ID, 'my_meta', true); $get_my_meta_data = array('Yes','No','Maybe');

        foreach ($get_my_meta_data as $key => $value) { ?>
          <input type="checkbox" name="_admin_my_checkbox[]" value="<?php echo $value;?>"<?php if($value == $get_my_meta){echo 'checked';} ?> /><?php echo $value;
        }`

然后是保存功能

if($_POST['_admin_my_checkbox']) {
        $my_checkbox_updater = $_POST['_admin_my_checkbox'];
        update_post_meta($post_id, 'my_meta', $my_checkbox_updater);    
    }

在这种情况下,当我选中一些复选框并使用print_r时,值会按预期保存。我想问题出在foreach循环中,但不知道可能是什么。

快速编辑。找到解决方案。in_array()功能完美地完成了这项工作。

foreach ($get_my_meta_data as $key => $value) { ?>
      <input type="checkbox" name="_admin_my_checkbox[]" value="<?php echo $value;?>"<?php if(in_array($value,$get_my_meta)){echo 'checked';} ?> /><?php echo $value;
    }