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

时间:2016-03-11 12:36:07

标签: php

我在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”值三次,如周一在下拉列表中显示三次。

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

亲切的问候。

2 个答案:

答案 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 */
    ?>