<?php
header("Content-Type:text/html;charset=utf-8;");
//學期按照上學期 當年09月-跨年02月,下學期03月-08月 可修改
class Term{
public $term;
public $all_row;
public $tb_pix = 'db_course_log';
public $tb_fpix= 'db_student_log';
public $terms;
//分表後綴前自動補年(例:2017)id=1上學期表後綴 id=2下學期表後綴(對應上下學期字典表id),start_time=學期開始月份,end_time=學期結束月份(支持跨年不需要特別聲明年份,name爲預留參數字段)
public function __construct(){
$arr = [array('id'=>1,'name'=>'','start_time'=>'09','end_time'=>'02'),array('id'=>2,'name'=>'','start_time'=>'03','end_time'=>'08')];
$this->all_row = $arr;
}
public function get_all($ym=''){
$y = empty($ym)?date('Y',time()):substr($ym,0,4);
$m = empty($ym)?date('m',time()):substr($ym,4,2);
$row = $this->all_row;
if($row){
$arr = [];
foreach($row as $k=>$v){
$start_time = sprintf("%02d",$v['start_time']);
$end_time = sprintf("%02d",$v['end_time']);
if($y==''){
$y = intval($y);
$last_y= $y-1;//date("Y", strtotime("-1 year"));
}else{
$y = intval($y);
$last_y= $y-1;
}
$m = intval($m);
if($v['id']=='1'){
if($m>8){
$y_ = $y+1;
$arr[$v['id']]['start_time'] = $y.$start_time;
$arr[$v['id']]['end_time'] = $y_.$end_time;
}else{
$arr[$v['id']]['start_time'] = $last_y.$start_time;
$arr[$v['id']]['end_time'] = $y.$end_time;
}
}else{
if($m>8){
$y_ = $y+1;
$arr[$v['id']]['start_time'] = $y_.$start_time;
$arr[$v['id']]['end_time'] = $y_.$end_time;
}else{
$arr[$v['id']]['start_time'] = $y.$start_time;
$arr[$v['id']]['end_time'] = $y.$end_time;
}
}
$arr[$v['id']]['term'] = $v['id'];
}
ksort($arr);
$this->terms = $arr;
return $arr;
}else{
$this->terms = $row;
}
return $row;
}
public function get_term($ym=''){
if(''==$ym){
$ym = date('Ym',time());
}
$term = 1;
if(!empty($this->terms) && $ym=='') $terms=$this->terms;
else $terms = $this->get_all($ym);
foreach($terms as $k=>$v){
if($ym>=$v['start_time']){
$term = $k;
}
}
$this->term = $term;
$terms[$term]['term'] = $term;
return $terms[$term];
}
public function get_tab($ym=''){
$the_term= $this->get_term($ym);
$tmp_ym = $the_term['start_time'];
$tmp_y = substr($tmp_ym,0,4);
if($this->term=='1'){
$xn = $tmp_y;
}else{
$xn = $tmp_y-1;
}
$end_key = $xn.$this->term;
$this->term_tab = $term_tab = $this->tb_pix.$end_key;
$this->term_ftab= $this->tb_fpix.$end_key;
$the_term['year'] = intval($xn);
$the_term['tab_name']= $this->term_tab;
$the_term['tab_fname']=$this->term_ftab;
$the_term['tab_end'] = $end_key;
return $the_term;
}
public function get_the_tab($year){
$year++;
$arr = array();
$arrf= array();
$row = $this->get_all($year);
foreach($row as $k=>$v){
$tmp_ym = $v['start_time'];
$tmp_y = substr($tmp_ym,0,4);
if($k=='1'){
$xn = $tmp_y;
}else{
$xn = $tmp_y-1;
}
$end_key = $xn.$k;
$term_tab = $this->tb_pix.$end_key;
$term_tab_f= $this->tb_fpix.$end_key;
$arr[$k] = $term_tab;
$arrf[$k]= $term_tab_f;
$row[$k]['tab_name'] = $term_tab;
$row[$k]['tab_fname']= $term_tab_f;
$row[$k]['tab_end'] = $end_key;
$row[$k]['term'] = $k;
$row[$k]['year'] = intval($xn);
}
return $row;
}
}
echo "<pre>";
$st = new Term();
echo "當前時間所處學年的所有學期(時間範圍):<br/>";
var_dump($st->get_all());
echo "指定時間(201703)所處學年的所有學期(時間範圍):<br/>";
var_dump($st->get_all(201703));
echo "當前時間所處學期時間範圍:<br/>";
$term=$st->get_term();
var_dump($term);
echo "指定時間(201809)的學期時間範圍:<br/>";
$term_201809 = $st->get_term(201809);
var_dump($term_201809);
echo "<br/>";
echo "當前時間所處學期、學年(時間範圍)以及所在學期表:<br/>";
var_dump($st->get_tab());
echo "指定時間(201909)的所處學期、學年(時間範圍)以及所在學期表:<br/>";
var_dump($st->get_tab(201909));
echo '<br/>';
echo "指定(2016屆)學年所有學期時間範圍以及所在學期表:<br/>";
var_dump($st->get_the_tab(2016));
echo "指定(2017屆)學年所有學期時間範圍以及所在學期表:<br/>";
var_dump($st->get_the_tab(2017));
?>
註釋部分無關操作請忽略BY摘取天上星線下筆記推送
(根據指定時間)動態劃分學期分表,用以動態學期分表自動CURD等聯動操作(開始結束時間可修改-待完善待修改)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.