多与爆炸选择:仅返回单词“阵列”
题
使用WordPress我已创建多个选择框,以便用户可以选择要排除的类别。当页面最初加载我看到我的默认值预选。然而,当我选择新的值并保存...我只看到所选单词“阵列”呼应并没有什么?
<select class="amultiple" id="<?php echo $value['id']; ?>" name="<?php echo $value['id']; ?>[]" multiple="multiple" size="8">
<?php
global $options;
foreach ($options as $value) {
if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] );
}
}
$categories = &get_categories('type=post&orderby=name&hide_empty=1');
if ($categories) {
$ex_cat = implode(',', $tt_cat_exclude);
foreach ($categories as $category) {
$selected = (in_array($ex_cat, $category->cat_ID)) ? ' selected="selected"' : '';
echo '<option value="' . $category->cat_ID . '"' . $selected . '>' . $category->cat_name . '</option>' . "\n";
}
}
?>
</select>
<br />For testing purposes, print variables: <?php echo $ex_cat; ?>
解决方案
您应该使用implode()
像这样
$ex_cat = implode(',', $tt_cat_exclude);
这将返回一个逗号分隔的列表
此线应
$selected = (in_array($category->cat_ID, $ex_cat)) ? ' selected="selected"' : '';
更改为
$selected = (in_array($category->cat_ID, $tt_cat_exclude)) ? ' selected="selected"' : '';
由于$ex_cat
是一个字符串,并且不能在in_array()中使用
在$ex_cat
现在冗余我想。
其他提示
看起来tt_cat_exclude
缺少它的打开$
名称=“tt_cat_exclude []”意味着你定义一个数组,所以它的正常的输出为“阵列”
用于测试试的print_r(输出变量的整个体系结构) 或后续代码var_dump(输出VAR型太)
在回传,该字段tt_cat_exclude
是你所设定的值的阵列 - 因为您的名字它与后面的tt_cat_exclude[]
[]
示例:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<select class="amultiple" id="tt_cat_exclude" name="tt_cat_exclude[]" multiple="multiple" size="8">
<option value="1">TestingA</option>
<option value="2">TestingB</option>
<option value="3">TestingC</option>
<option value="4">TestingD</option>
<option value="5">TestingE</option>
</select>
<input type="submit" value="Submit" />
</form>
<br/><br/>For testing purposes: <?php
if(isset($_POST['tt_cat_exclude'])){
var_dump($_POST['tt_cat_exclude']); // outputs an array of the selected values
}
?>
不隶属于 StackOverflow