我正在创建一个页面选项,其中包含一些带有特定值的多个复选框。以下是我的复选框表单代码片段:
<label>Global Checkboxes</label>
<input style="width:0;" type="checkbox" name="page_options[check_list_global][0]" value=“check1" <?php checked( $options[\'check_list_global’][0], ‘check1\'); ?> />
<label>Check 1</label>
<input style="width:0;" type="checkbox" name="page_options[check_list_global][1]" value=“check2" <?php checked( $options[\'check_list_global\'][1], ‘check2\'); ?> />
<label>Check 2</label>
<input style="width:0;" type="checkbox" name="page_options[check_list_global][2]" value=“check3" <?php checked( $options[\'check_list_global\'][2], ‘check3\'); ?> />
然后,我可以使用常规for循环获取值,并对$输出执行字符串操作。这可以满足我的需要。
for ($i = 0; $i < 3; ++$i) {
print $options[\'check_list_global’] [$i];
}
但我觉得必须有更好的方法。理想情况下,我希望将所有复选框的值存储在一个
page_options[\'check_list_global\'] 格式为
key : value 或者类似的。摆脱
[$number] 在选项之后。这样,我就不必对所有字段进行硬编码,更加干净、高效,当然,如果需要添加更多字段,还需要动态。
所以我想我的问题可以总结如下:
如何将清单的所有值存储为一个数组,并避免指定[$number] 在我的每个领域?
我希望我足够清楚,谢谢!
SO网友:mmarquez
经过多次实验,我解决了自己的问题,这个答案可能会对某些人有所帮助。
function mmm_select_field( ) {
$options = get_option( \'mmm_settings\' );
$buttons = array(
\'Bold\' => \'bold\',
\'Italic\' => \'italic\',
\'Underline\' => \'underline\',
\'Superscript\' => \'superscript\',
\'Align Left\' => \'alignleft\',
\'Align Center\' => \'aligncenter\',
\'Align Right\' => \'alignright\',
\'Bullet List\' => \'bulletlist\',
\'Number List\' => \'numberlist\',
\'Link\' => \'link\',
\'Unlink\' => \'unlink\'
);
foreach ($buttons as $key => $value) { ?>
<input name="mmm_settings[mmm_select_field][]" type="checkbox" value=\'<?php echo $value; ?>\' <?php if((!empty($options[\'mmm_select_field\']) && in_array($value, $options[\'mmm_select_field\']))) { echo "checked"; } ?>/>
<label for="<?php echo $value ?>"><?php echo $key; ?></label>
<?php }
}
基本上,这是将数组分配给选项/设置的方式:
mmm_settings[mmm_select_field][]