2018年3月19日 星期一

CODE REVIEW X學務中轉換修飾指令成陣列

取得 欄位解釋的原始資料

$title_ary=array();
foreach ($column as $val) {
         $title_ary[] = $val['field'];
}

$title_ary 會有如
['年級 & " 年" & 班級 & "班"',  '畢業年月|R#/##', ...]

 $tindex=0;
 $textbank=array();
 $question=array();
 $findex=0;


每一顯示欄位可用 & 結合多個 文字和資料庫中的欄位
$tindex是文字的索引,$findex是資料庫欄位的索引
所以範例中   年級 的 $findex=0 班級 的 $findex=1 畢業年月=2
"年"的 tindex=0 "班"的 $tindex=1

以下列方式處理$title_ary$field_ary、$textbank$field_modifier;
foreach($title_ary as $t) {
          $rr  = array();
          $ary = explode('&',$t);
          foreach ($ary as $ar) {
            $ar = trim($ar); //判斷是文字還是欄位
            if (substr($ar,0,1)=='"' && substr($ar,-1)=='"') {
              $textbank[$tindex] = substr($ar,1,strlen($ar)-2);
              if (substr($textbank[$tindex],0,1)=='@') {
                $aa = explode('?',$textbank[$tindex]);
                $question[] = array(
                   'title'=> substr($aa[0],1),
                   'default'=> $aa[1],
                   'tindex'=> $tindex
                );
              }
             
              $rr[] = 'text_'.$tindex;
              $tindex++;
            } else {
              $pos = mb_strpos($ar,'|',0,'utf8');
              if ($pos>0) {
                $filters = mb_substr($ar,$pos+1,255,'utf8');
                $tags = explode('|',$filters);
                $field_modifier[$findex]=$tags;
                $fname=  mb_substr($ar,0,$pos,'utf8');
              } else {
                $fname=$ar;
              }
              $filed_name = array_search($fname,$titles_arr);
              if ($filed_name)
                $rr[] = $filed_name;
              else 
                $rr[] = $fname;
            }
            $findex++;
          }
          $field_ary[] = $rr;
      }


處理後
field_ary[0] = array('smb_grad', 'text_0', 'smb_class','text_1');
field_ary[1] = array('stud_gradym'); 
//畢業年月會轉成英文stud_gradym

這些將傳送給LIB 裡的 sxs.stud_list.php處理

沒有留言:

張貼留言