使用爆炸进行多重选择:仅返回单词“数组”

时间:2009-12-07 08:44:27

标签: php wordpress select explode

使用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; ?>

http://i48.tinypic.com/k9e3qq.gif

4 个答案:

答案 0 :(得分:2)

您应该使用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现在是多余的。

答案 1 :(得分:1)

看起来tt_cat_exclude缺少正在打开$

答案 2 :(得分:1)

name =“tt_cat_exclude []”表示你正在定义一个数组,所以输出为“array”是正常的

用于测试try print_r(输出变量的整个架构) 或var_dump(也输出var类型)

答案 3 :(得分:0)

当您回发时,字段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
}

?>