我在循环中遇到分割问题。我有一个多选组合框形式,其中包含一个课程。该表格用于存储教师的教学时数数据。每位老师都可以教授不止一节课。
<form class="form-vertical" method="POST" action="http://localhost/penjadwalan/administrator/jammengajar/add_process">
<fieldset>
<legend>Tambah Data</legend>
<div class="col-lg-6">
<div class="form-group">
<label for="order">Guru</label>
<input id="teacher" name="teacher" value="TI" type="text">
</div>
<div class="form-group">
<label for="order">Mata Pelajaran</label>
<select name="lesson[]" multiple class="form-control chosen-select">
<option value="108">Teknik Informatika - Prakarya</option>
<option value="107">Antropologi</option>
<option value="81">Sosiologi</option>
<option value="74">Seni Budaya</option>
<option value="70">Bahasa Sunda</option>
<option value="68">Seni Musik</option>
</select>
</div>
<div class="form-group">
<label for="order">Total Hours</label>
<input id="total_jam" name="total_hours" value="" type="text" placeholder="" class="form-control input-md">
</div>
<div class="form-group">
<button id="" name="" class="btn btn-primary"><i class="fa fa-save"></i> Simpan Data</button>
</div>
</div>
</fieldset>
</form>
每节课的时间范围为1到4小时。我将举例说明
根据以上数据,老师有2节课。因此,数学应该是16小时,化学应该是14小时..现在如何根据总小时和课程自动划分?
我制作的流程脚本
if ($lesson > 1) {
$class = $total_hours / $lesson;
if ($class % 2 == 0) {
$class = $class;
} else {
$class = $class + 1;
$remaining_class = $total / $lesson - 1;
}
} else {
$class = $total_hours;
}
if (count($lesson) > 1) {
foreach ($lesson as $v) {
$lesson_data = $this->pelajaran->getIdLesson($v);
$class = $this->kelas->getAllClassByFaculty($mappel->kelompok_mapel)->result();
$total_class = count($class);
$n = $class / $lesson_data->jumlah_jam;
foreach ($kelas_jurusan as $vals) {
if ($i < $n) {
$jammengajar = array('kode_guru' => $kode_guru,
'id_mapel' => $mappel->id_mapel,
'jumlah_jam' => $mappel->jumlah_jam,
'id_kelas' => $vals->id_kelas
);
$this->jammengajar->addJamMengajar($jammengajar);
} else {
}
$i++;
}
}
} else {
}
答案 0 :(得分:0)
如果我理解正确,有多种方法可以做到这一点。
最简单的方法,将其视为矢量:
为每个课程添加您的小时数,除以总数。所以从你的例子来看:
老师:安迪 课:数学(4小时),化学(2小时) 总小时数:30小时你需要30 /(4 + 2)= 5,然后将每个类乘以数值,这将给你4 * 5 = 20小时的数学和2 * 5 = 10小时的化学。
使用此解决方案或任何解决方案时遇到的问题是,当小时数无法工作时(如果这是可能的情况),例如31小时,在这种情况下,您将需要取“地板”值你的系数(即31 /(4 + 2)= 5.16,所以你仍然只做5)。
从那里,你可以采取任何剩余,检查它是否小于较小的类,如果是这样,填写较小的类(32小时,你会得到32 /(4 + 2),这是5.33333,低至5,然后重复剩下的两个小时,从而给你20小时的数学和12小时的化学反应。)