繁体   English   中英

在foreach循环中使用for循环吗? PHP

[英]For loop with foreach loop in it? PHP

我正在努力实现以下目标。

经历一个for循环,并产生一组7个选择框,其中包含时间选项。 我现在使此循环工作正常。 这是针对一周中每天都有时间开始活动的表单。

对于要更改值的用户,我想生成相同的7个框,但是对于数据库中输入的每个值,我想添加该日期的原始选定值,并请为其中的框提供选择值。

时代的foreach循环

foreach ($times as $time) {
    echo '<option value="' . $time['num'] . '"'; if ($event == $time['dec']){echo 'selected="selected"';};
            echo '>';
            echo $time['clock'];
            echo '</option>';
}

时间数组

$times = array( array('num' => 70000, 'dec' => '07:00:00', 'clock' => '7:00am'), array('num' => 71500, 'dec' => '07:15:00', 'clock' => '7:15am') etc…

这将产生选择选项。

然后foreach获取现有值。

foreach ($event -> Selected as $select) {
   $event = $select -> Start;
}

现在这一切正常,但是如果存在3个记录,则仅产生3个选择,我想使用DB值产生前3个选择中的7个选择,如果存在3个记录并且4个空选择。

该数组仅包含有限数量的条目,因此循环最多只能迭代此数量。

您可以通过检查数组中有多少个元素,然后为其余元素输出空值来解决此问题。

例如,在循环后添加以下内容:

$count = 7 - count($times);
for($i = 0; $i < $count; $i ++)
{
    echo '<option></option>';
}

上面是一个简单的循环,输出空条目以确保有7个下拉值。

您可以在进行foreach之前执行此操作:

$desired = 7;
$extra = array_fill(0, $desired - count($times));
$times = array_merge($times, $extra);

它将使您的数组$times始终与$desired的数字一样长。

暂无
暂无

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

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