使用php在引导选择框内选中复选框

使用php在引导选择框内选中复选框,php,Php,在为每个循环执行操作时,我使用以下代码检查checbox。但复选框不基于数组值进行检查。我使用explode创建$newsource。实际上我有 sourceIds=100252&sourceIds=100111 $newsource = Array ( [0] => sourceIds=100252 [1] => sourceIds=100111 ); <select id="source" class="form-control source"

在为每个循环执行操作时,我使用以下代码检查checbox。但复选框不基于数组值进行检查。我使用explode创建$newsource。实际上我有 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>
$newsource=Array([0]=>sourceIds=100252[1]=>sourceIds=100111);
试试:

if($newSource[$loop]==$row->id){
回显“.$row->name.”;
}
否则{
回显“.$row->name.”;
echo“a”。$newSource[$loop];
}

您使用的是checked而不是selected,顺便说一句,它是常量而不是字符串的一部分

...
echo '<option selected="selected" value="'.$row->id.'">'.$row->name.'</option>';
...
。。。
回显“.$row->name.”;
...
但是,您的代码还有其他问题:数组定义看起来不正确,您是以普通数组的形式访问它,但该定义给我的印象是它是一个关联数组。 您还将
$newsource
称为末尾附近的
$newsource

$sourceSession=“sourceIds=100252&sourceIds=100111”;
    $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>
$newSource=explode('=',$sourceSession); preg_match_all(“!\d+!”,$sourceSession,$matches);
您是否注意到$newsource=Array([0]=>sourceIds=100252[1]=>sourceIds=100111);。我认为这就是问题所在
    $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>