Php 在foreach循环中使用for循环打印值

Php 在foreach循环中使用for循环打印值,php,Php,在foreach循环中使用for循环打印值时,我遇到了麻烦。 我使用foreach循环填充下拉列表,方法是定义一个数组,然后将值标记为selected,该值与从数据库检索到的值相匹配,但问题是值在上一个下拉列表中重复。这是我的密码: 首先,我将从数据库检索的字符串值转换为数组。代码和输出如下所示: foreach($officeDetails as $value){ $str = $value['days']; $arr = explode(", ", $str); } pr

在foreach循环中使用for循环打印值时,我遇到了麻烦。 我使用foreach循环填充下拉列表,方法是定义一个数组,然后将值标记为selected,该值与从数据库检索到的值相匹配,但问题是值在上一个下拉列表中重复。这是我的密码: 首先,我将从数据库检索的字符串值转换为数组。代码和输出如下所示:

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 
      )
现在,我正在尝试使用foreach循环填充一个下拉列表,在下面的代码中使用一个名为$daysarsee的数组,并将从数据库检索的值标记为选中的值,如上所示,使用一个名为$arr的数组。 代码:

结果是,;将打印两个选择框,显示右选择的值,但第二个选择框将打印$days的每个值三次,就像周一在下拉列表中显示三次一样

我知道我遗漏了一些小事情,请帮助我,我被困在一个循环中,无法摆脱它。非常感谢你的建议。提前谢谢

亲切的问候。

试试下面的方法

foreach($officeDetails as $j => $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 $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*/ ?>

尝试删除您的计数,因为它似乎相当于第一位中发布的数组中的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 */
    ?>

你的问题是foreach和for循环?太过分了。删除for循环并生成一个键$i=>$days。在写这篇文章的时候,我看到答案被贴出来了=谢谢。我正在这样做,但它只打印一个选择框,我想要两个,因为$arr有两个数组。。你解决这个问题了吗?因为即使是我也有同样的问题。$arr在循环中,它将覆盖以前的值。感谢这个答案。它工作正常,但它只在星期一和星期二打印一个数组,而不是第二个数组。@syedmohamed它工作不正常,因为$officeDetails foreach是父循环,而此选择框和其他代码在$officeDetails foreach循环内。@Aisha您能试试吗now@syedmohamed非常感谢您的建议,但是$str=$officeDetails[$i]['days'];这不起作用,因为foreach$officeDetails作为$value{包含选择框,foreach$daysar作为$days{,所以我认为您的第一个答案非常接近,它需要一些小的更改。如果您能提供帮助,我将非常感谢。再次感谢。
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 */
    ?>