繁体   English   中英

在多个选择框中分配数组值

[英]distribute array values in multiple select box

我有如下数组

$myArray = array('a','b','c','d');

我需要分发他们的一些值已经保存在数据库中为不同数量的选择框,让我们说,4个列表框,以便这些保存的值将在第一个列表框中显示为选定 ,其余的将被默认和假设保存的值是一个和C

因此,基于该输出,应该有4个以(Selected)开始的列表框和第二个c(Selected)列表框,其余2个列表框应保持默认值,例如

<select id="id" name="id" class="form-control">
    <option value="">No selection</option>
    <option value="a" selected>a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    <option value="d">d</option>
</select>

<select id="id" name="id" class="form-control">
    <option value="">No selection</option>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c" selected>c</option>
    <option value="d">d</option>
</select>

<select id="id" name="id" class="form-control">
    <option value="" selected>No selection</option>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    <option value="d">d</option>
</select>

<select id="id" name="id" class="form-control">
    <option value="" selected>No selection</option>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    <option value="d">d</option>
</select>

编辑这是我的代码,在该代码中,我根据传递的值循环生成7或9个列表框,并在$municipals上的i循环内​​部显示所有市政当局,而某个市政当局存在于数据库中保存的值数组中,我需要显示它在第一个选择框中,依此类推

                    <?php if(!empty($municipal_number->meta_value)):
                        $ids = array();

                        foreach($municipal_ids as $municipal_id) {
                            $ids[] = $municipal_id->meta_value;
                        }

                    if($municipal_number->meta_value == 7):  
                        for ($x = 1; $x <= 7; $x++): ?>
                            <div class="col-lg-3">
                                <label>Select Municipal</label>

                                <select id="municipal_id_<?php echo $x; ?>" name="municipal_id[]" class="municipal_id form-control">
                                    <option value="0" selected>No Municipal</option>

                                    <?php foreach($municipals as $municipal): ?>
                                        <?php if(in_array($municipal->id, $ids)): ?>
                                            <option selected value="<?php echo $municipal->id; ?>"><?php echo $municipal->first_name.' '.$municipal->last_name; ?></option>
                                        <?php else: ?>
                                            <option value="<?php echo $municipal->id; ?>"><?php echo $municipal->first_name.' '.$municipal->last_name; ?></option>
                                        <?php endif; ?>
                                    <?php endforeach; ?>
                                </select>
                            </div>
                        <?php endfor;
                    elseif($municipal_number->meta_value == 9):
                        for ($x = 1; $x <= 9; $x++): ?>
                            <div class="col-lg-3">
                                <label>Select Municipal</label>

                                <select id="municipal_id_<?php echo $x; ?>" name="municipal_id[]" class="municipal_id form-control">
                                    <option value="0" selected>No Municipal</option>

                                    <?php foreach($municipals as $municipal): ?>
                                        <?php if(in_array($municipal->id, $ids)): ?>
                                            <option value="<?php echo $municipal->id; ?>"><?php echo $municipal->first_name.' '.$municipal->last_name; ?></option>
                                        <?php else: ?>
                                            <option value="<?php echo $municipal->id; ?>"><?php echo $municipal->first_name.' '.$municipal->last_name; ?></option>
                                        <?php endif; ?>
                                    <?php endforeach; ?>
                                </select>
                            </div>
                        <?php endfor; ?>
                    <?php endif; ?>
                <?php endif; ?>

利用array_shift()函数和一个简单的for循环来实现您的逻辑,如下所示:

$myArray = array('a','c');

for($i = 0; $i < 4; ++$i){
    $flag = false;
    ?>
    <select id="id" name="id" class="form-control">
        <option value="">No selection</option>
        <option value="a" <?php if(!$flag && in_array('a', $myArray)){ echo "selected='selected'"; $flag = true; } ?>>a</option>
        <option value="b" <?php if(!$flag && in_array('b', $myArray)){ echo "selected='selected'"; $flag = true; } ?>>b</option>
        <option value="c" <?php if(!$flag && in_array('c', $myArray)){ echo "selected='selected'"; $flag = true; } ?>>c</option>
        <option value="d" <?php if(!$flag && in_array('d', $myArray)){ echo "selected='selected'"; $flag = true; } ?>>d</option>
    </select>
    <?php
    array_shift($myArray);
}

注意:请注意idname属性,它对于每个元素都应该是唯一的。

这是一些示例代码:

$myArray = array('a','b','c','d');
$selected_values = array('a','c');
$number_of_selects = 4;

for ($i = 0; $i < $number_of_selects; $i++) {
    $sel_val = !empty($selected_values[$i])? $selected_values[$i] : false;?>
<select>
<?php
    foreach ($myArray as $v) {?>
        <option value="<?=$v?>" <?=$v===$sel_val? 'selected' : ''?>><?=$v?><option>
<?php
    }?>
</select>
<?php
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM