[英]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);
}
注意:请注意id
和name
属性,它对于每个元素都应该是唯一的。
这是一些示例代码:
$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.