尝试创建一个for
HTML字段中输出了HHMM
的{{1}}循环。
我目前有:
data-time
除了每次都会输出for ($i = 1; $i <= 20; ++$i) {
echo '<div class="mb-timer-hour"><div class="mb-timer-half" data-time="0830"></div></div>';
}
。
然后,我尝试了data-time="0830"
,但这又成功了:$h = 30; $h + 30
是否可以循环0800, 0830, 0860, 0890, ...
?
开始时间和结束时间是用户变量,这就是为什么我没有对数组进行硬编码的原因。
我希望的输出是:
0800, 0830, 0900, 0930, ...
答案 0 :(得分:0)
您可以使用DateTime对象,并始终添加30分钟(或60分钟),直到达到结束时间为止。循环中使用format方法来输出时间。
$start = '0830';
$end = '1230';
$date_end = date_create($end);
for($date = date_create($start);$date <= $date_end; $date->modify('+30 Minutes')){
echo '<div class="mb-timer-hour"><div class="mb-timer-half" data-time="'.$date->format('Hi').'"></div></div>';
}
循环中的HTML输出不好。我从问题中拿走了。如果测试在浏览器中运行,则必须查看页面源文本以获取结果。
答案 1 :(得分:0)
我最终解决此问题的方法是使用以下代码:
Object.defineProperty(Array.prototype, 'countValues', {
value(num) {
return this.reduce((a, b) => a + (b === num), 0);
}
});
const newArr = [1, 2, 3, 4, 4]
console.log(newArr.countValues(4)) //Would return 2
$mb_timer_start = strtotime( 'today 0800' );
$mb_timer_end = strtotime( 'today 1800' );
这段代码也随着小时<div class="mbcontainer mb-timer">
<div class="mb-timer-container">
<!-- this is related to: https://stackoverflow.com/a/59637684/1086990 -->
<div class="mb-marker"></div>
<?php
// loop through start H until end H
for( $i = date('H', $mb_timer_start); $i < date('H', $mb_timer_end); ++$i ) {
echo '<div class="mb-timer-hour" style="width:calc(100% / ' . $mb_timer_diff . ');" data-time="' . str_pad($i, 2, '0', STR_PAD_LEFT) . '00">';
echo '<div class="mb-timer-half" data-time="' . str_pad($i, 2, '0', STR_PAD_LEFT) . '30"></div>';
echo '</div>';
}
?>
</div>
</div>
的增加而变化,但是循环仍然是问题所在。