我在foreach循环中使用for循环打印值时遇到麻烦。 我使用foreach循环填充下拉列表,方法是定义一个数组,然后将值标记为选中,与从数据库中检索的值匹配,但问题是值在最后一个下拉列表中重复。这是我的代码: 首先,我将从数据库中检索到的字符串值转换为数组。代码和输出如下:
foreach($officeDetails as $value){
$str = $value['days'];
$arr = explode(", ", $str);
}
print_r($arr);
输出是:
Array (
[0] => Monday
[1] => Tuesday
)
Array (
[0] => Wednesday
[1] => Thursday
[2] => Friday
)
现在我尝试使用带有名为$ daysArr的数组的foreach循环填充下拉列表(请参阅下面的代码),并将值标记为选中,这些值是从数据库中检索的,如上所示,名为$ arr。 代码:
foreach($officeDetails as $value){
$str = $value['days'];
$arr = explode(", ", $str);
<select id="dw" name="days[0][]" class="full-width select2-offscreen" data-init-plugin="select2" multiple="" tabindex="-1">
<?php $daysArr = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
foreach ($daysArr as $days) {
for ($i = 0; $i < count($arr); $i++) {
if ($days == $arr[$i]) {
?>
<option value="<?php echo $days; ?>" selected><?php echo $days; ?></option>
<?php } else { ?>
<option value="<?php echo $days; ?>"><?php echo $days; ?></option>
<?php } /* end else condition */
}/* end for condition */
} /*end foreach loop */
}
?>
</select>
结果是;打印两个选择框,显示正确的选定值,但第二个选择框打印每个“$ days”值三次,如周一在下拉列表中显示三次。
我知道我失踪的一些小事,请帮助我,我被困在一个循环中,无法摆脱它。您的建议非常感谢。提前谢谢。
亲切的问候。
答案 0 :(得分:2)
尝试以下操作
foreach($ officeDetails as $ j =&gt; $ value){
$ str = $ value [&#39; days&#39;];
$ arr = explode(&#34;,&#34;,$ str);
foreach($daysArr as $i => $days){
if ($days == $arr[$i]) {
?>
<option value="<?php echo $days; ?>" selected><?php echo $days; ?></option>
<?php } else{ ?>
<option value="<?php echo $days; ?>" ><?php echo $days; ?></option>
<?php } /* end else condition */
} /*end foreach loop */
?>
</select>
<?php } /*end foreach loop*/ ?>
答案 1 :(得分:0)
尝试删除您的计数,因为它似乎相当于第一位中发布的数组中的3:
foreach($daysArr as $days){
if($days == $arr[$i]){
?>
<option value="<?php echo $days; ?>" selected><?php echo $days; ?></option>
<?php } else{ ?>
<option value="<?php echo $days; ?>" ><?php echo $days; ?></option>
<?php } /* end else condition */
} /*end foreach loop */
?>