我想加载多选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>
有人帮忙吗?
答案 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"':'';
?>