循环除法
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小时的配额。我举个例子
- 老师: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 {
}
如果我没有理解错的话,有多种方法可以做到这一点。
最简单的方法,将其视为向量:
将每个 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 小时的化学)。
我在循环中遇到除法问题。我有一个包含课程的多选组合框表单。该表格用于存储教师的教学时间数据。每个老师可以教不止一节课。
<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 {
}
如果我没有理解错的话,有多种方法可以做到这一点。
最简单的方法,将其视为向量:
将每个 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 小时的化学)。