多选下拉列表未选中

时间:2013-12-03 16:08:20

标签: php arrays forms

我想加载多选dropdwon表单,如果在$ opt中找到$ val然后将它们显示为已选中,但似乎问题在于(in_array函数不会相互搜索数组)不进行比较。 / p>

我有以下代码......

<div class="controls">
    <label class="control-label" for="inputWei"><?=_('Display')?></label>
    <input type="hidden" value="" name="disp[] ">
    <select id="" class="input-xlarge multiselect" parent="" title="" rel="tooltip_right" name="disp[]" multiple="multiple" style="display: none;" data-original-title="">
    <?php 
        $genD = "Men, Women, Both";
        $opt = explode(',',$genD); 
        $gen = "Men, Women";
        $val = explode(',', $gen);       
        foreach($opt as $option){
            $selected = in_array(trim($val),$opt)?'selected="selected"':'';
            ?>
        <option <?=$selected?> value="<?=trim($option)?>"><?=trim($option)?></option>

 <?php  } ?>

    </select>
</div>
有人帮忙吗?

1 个答案:

答案 0 :(得分:1)

问题不在in_array(),而是在trim()的使用中。 trim不适用于数组,仅适用于字符串。你必须分别修剪每个值。 此外,您已将in_array参数反转

这样的事情应该有效。您也可以使用array_walk()来修改数组

$val = explode(',', $gen);   
$copy = array();
foreach ($val as $v){
    $copy[] = trim($v);
}
$val = $copy;
foreach($options as $option){
    $selected = in_array($option, $val)?'selected="selected"':'';
    ?>