我在执行每个循环时使用以下代码来检查checbox。但是复选框没有根据数组值进行检查。我使用explode来创建$ newsource.Actualy我有 sourceIds = 100252&安培; sourceIds = 100111
$newsource = Array ( [0] => sourceIds=100252 [1] => sourceIds=100111 );
<select id="source" class="form-control source" multiple="multiple">
<?php $loop=0; foreach($sources->sources as $row) {
echo $loop;
if($newsource[$loop]==$row->id) {
echo '<option checked="'.checked.'" value="'.$row->id.'">'.$row->name.'</option>';
}
else {
echo '<option value="'.$row->id.'">'.$row->name.'</option>';
echo "a".$newSource[$loop];
}
$loop = $loop +1;} ?></select>
答案 0 :(得分:0)
尝试:
if($newSource[$loop]==$row->id) {
echo '<option value="'.$row->id.'" selected>'.$row->name.'</option>';
}
else {
echo '<option value="'.$row->id.'">'.$row->name.'</option>';
echo "a".$newSource[$loop];
}
答案 1 :(得分:0)
你使用的是check而不是select,并且偶然使用它作为常量,而不是作为字符串的一部分
...
echo '<option selected="selected" value="'.$row->id.'">'.$row->name.'</option>';
...
您的代码有其他问题:数组定义看起来不正确,您将其作为普通数组访问,但该定义给我的印象是它是一个关联数组。
并且您在结尾附近也将$newsource
称为$newSource
。
答案 2 :(得分:0)
$sourceSession = "sourceIds=100252&sourceIds=100111";
$newSource = explode('=',$sourceSession);
preg_match_all('!\d+!', $sourceSession, $matches);
<select id="source" class="form-control source" multiple="multiple">
<?php $loop=0; foreach($sources->sources as $row) {
if(isset($matches[0][$loop])) {
$a = $loop;
$mtch = $matches[0][$a];
}
if($row->id==$mtch) {
echo '<option selected="'.selected.'" value="'.$row->id.'">'.$row->name.'</option>';
$loop = $loop + 1;
}
else {
echo '<option value="'.$row->id.'">'.$row->name.'</option>';
}
} ?></select>