循环划分

时间:2015-01-06 05:54:39

标签: php loops division

我在循环中遇到分割问题。我有一个多选组合框形式,其中包含一个课程。该表格用于存储教师的教学时数数据。每位老师都可以教授不止一节课。

<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小时。我将举例说明

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

根据以上数据,老师有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 {

}

1 个答案:

答案 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小时的化学反应。)