<?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等联动操作(开始结束时间可修改-待完善待修改)
最新推荐文章于 2023-04-18 15:56:11 发布