For循环与它的foreach循环? PHP

问题描述:

我正在尝试做以下事情。For循环与它的foreach循环? 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个记录存在,我想产生7个选择与前3个选择与DB值,如果3个记录存在和4个空选择

+0

您是否尝试过'$ times = array_merge($ times,array_fill(0,7-count($ times)));'在您的'foreach()'之前创建7个元素? –

该数组只包含有限数量的条目,因此该循环只会迭代到该数字。

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

例如添加以下在循环之后:

$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数量。