我在PHP中有一个像这样的标准表单数组。我需要以15分钟的增量计算长达10小时的劳动力,每15分钟或每小时40分钟的值为10。是否可以使用PHP将其自动化为某种类型的数组,而不是对这些值中的每一个进行硬编码?看起来应该有一个更好的方法,我不知道如何开始?
<select size="1" name="labor" id="labor">
<option value="80">2 Hours</option>
<option value="70">1 Hour 45 min.</option>
<option value="60">1 Hour 30 min.</option>
<option value="50">1 Hour 15 min.</option>
<option value="40">1 Hour</option>
<option value="30">45 Minutes</option>
<option value="20">30 Minutes</option>
<option value="10">15 Minutes</option>
</select>
答案 0 :(得分:2)
您需要两个值,即10个单位的增量和用户显示的值。在for
(或其他变量)上运行$i
循环,从1到40并计算循环内的值:
$i
乘以10。答案 1 :(得分:2)
可能最容易对解决方案进行硬编码。我认为这是@Wrikken提到的那种情况之一,因为它使代码非常干净且易于维护(想象一下在一两年内回到这里)。此外,使用数据库表也可以很好地处理这种情况。
首先使用数组存储值和描述:
$list = array();
$list['10'] = '15 Minutes';
....
然后遍历整个数组以生成下拉列表:
<select size="1" name="labor" id="labor">
<?php
foreach($list as $value => $desc){
$option = "<option value=$value>" . $desc . "</option>";
echo $option;
}
?>
</select>
答案 2 :(得分:1)
这应该这样做。将$ i的起始编号更改为下拉列表应包含的总分钟数。现在设定为750分钟。
echo '<select>';
for ($i = 750; $i >= 15; $i -= 15) {
$hours = $i / 60;
$min = $i % 60;
echo '<option>';
if ($hours >= 1)
echo floor($hours)." Hours ";
if ($min > 1)
echo $min." Minutes";
echo '</option>';
}
echo '</select>';
注意:此代码并不完美,起始编号需要均匀分配15才能生成所需的结果(但是,它可以正常工作)。
答案 3 :(得分:0)
类似的东西:
<select size="1" name="labor" id="labor">
<?php
for ($x = 1; $x < 11; $x++) {
echo '<option value="';
echo $x*10;
echo '">';
echo $x*15;
echo " Minutes</option>";
}
?>
</select>
在那里扔一个if语句将它分开,这样一旦(x / 10 * 15)> 60,它就会开始持续数小时而不是75/90/105/120分钟。