【问题标题】:Multiple Select with Explode: only returns the word "Array"Multiple Select with Explode:只返回单词“Array”
【发布时间】:2010-12-23 22:34:31
【问题描述】:

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

【问题讨论】:

    标签: php wordpress select explode


    【解决方案1】:

    你应该使用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 现在我猜是多余的了。

    【讨论】:

    • 好吧,“数组”这个词没有打印出来……现在随机数是:)
    • 好的,这是工作 - 但是它没有“记住”选择(变量仍然打印,但框中没有选择任何内容)我太接近了!
    • 是不是表示选择框中没有选择“当前”或“选定”类别?
    • 我认为您是在将键与值进行比较
    • 没错,没有选择用户选择的内容(尽管我仍然看到打印在表单下方的变量)
    【解决方案2】:

    看起来tt_cat_exclude 缺少它正在打开的$

    【讨论】:

      【解决方案3】:

      name="tt_cat_exclude[]" 表示您正在定义一个数组,因此输出为“array”是正常的

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-23
          • 2015-05-17
          • 1970-01-01
          • 1970-01-01
          • 2018-08-16
          • 2015-04-06
          • 1970-01-01
          相关资源
          最近更新 更多