循环除法

Division in looping

我在循环中遇到除法问题。我有一个包含课程的多选组合框表单。该表格用于存储教师的教学时间数据。每个老师可以教不止一节课。

<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 {

}

如果我没有理解错的话,有多种方法可以做到这一点。

最简单的方法,将其视为向量:

将每个 class 的小时数相加,除以总数。所以从你的例子来看:

老师:安迪 课程:数学(4小时),化学(2小时) 总时数:30 小时

你需要 30/(4 + 2) = 5,然后将每个 class 乘以数值,这会给你 4*5=20 小时的数学和 2*5=10 小时化学。

您将 运行 解决此问题或任何解决方案的问题是时间无法工作(如果这是可能的情况),例如 31 小时,在这种情况下您需要系数的 "floor" 值(即 31/(4+2)=5.16,所以您仍然只做 5)。

从那里,你可以取出任何余数,检查它是否小于较小的 class,如果是,则用较小的 class 填充(32 小时,你会得到 32/(4+2),即 5.33333,将其降到 5,然后在剩下的两个小时内重复,从而给你 20 小时的数学和 12 小时的化学)。