久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      php開發(fā)在線考試培訓(xùn)系統(tǒng)

      php開發(fā)在線考試培訓(xùn)系統(tǒng)

      php開發(fā)在線考試培訓(xùn)系統(tǒng)

      說明:本篇文章是為了記錄下學(xué)習(xí)開發(fā)思路,程序不具備商業(yè)價(jià)值,明白開發(fā)思路,商用需二次升級(jí)!

      (推薦學(xué)習(xí):php培訓(xùn))

      效果圖如下:

      php開發(fā)在線考試培訓(xùn)系統(tǒng)

      題庫首頁展示

      php開發(fā)在線考試培訓(xùn)系統(tǒng)

      試題在線測試

      php開發(fā)在線考試培訓(xùn)系統(tǒng)

      分?jǐn)?shù)統(tǒng)計(jì)

      通過該小項(xiàng)目目的是練習(xí)PHP基礎(chǔ)知識(shí),通過對(duì)數(shù)組操作實(shí)現(xiàn)考題信息存儲(chǔ)加載,引入模板文件,實(shí)現(xiàn)考題數(shù)據(jù)的調(diào)用布局。

      1、由于小項(xiàng)目未使用數(shù)據(jù)庫,考題以數(shù)組的形式存儲(chǔ)在PHP文件中,部分代碼如下:

      注:下方代碼很亂。??梢韵螺d文末的程序源碼,對(duì)照本博文觀看。

      <?php // 考試題庫二 return [    // 題庫標(biāo)題   'title' => 'PHP基礎(chǔ)語法考試題(二)',    // 答題時(shí)限(秒數(shù))  'timeout' => 1200,    // 題庫    'data' => [       // 判斷題  'binary' => [                  'name' => '判斷題',          // 題型名稱 'score' => 24,              // 題型分?jǐn)?shù)  'data' => [                     1 => [                  'question' => '在".php"后綴的文件中,所有的PHP代碼都只能寫在"<?php ?>"標(biāo)記內(nèi)。',               'answer' => 'no'            ],          2=> [                        'question' => '標(biāo)量類型包括布爾型、整型、字符串型和數(shù)組型。',               'answer' => 'no'            ],          3=> [                       'question' => 'var_dump是PHP中用于打印變量或表達(dá)式的類型與值等相關(guān)信息的函數(shù)。',                        'answer' => 'yes'                     ]                  ]               ],               // 單選題   'single' => [                  'name' => '單選題',         'score' => 40         ,         'data' => [                     1 => [                        'question' => '下列選項(xiàng)中,不區(qū)分大小寫的標(biāo)識(shí)符是( )。',               'option' => [                  '函數(shù)名','常量名','變量名','屬性名'               ],               'answer' => 'A'            ], 2=> [

      2、那么如何獲取考題數(shù)據(jù)呢?引入文件即可

      $data=require "./data/1.php";

      注意,上面考題文件是用return返回的數(shù)組,當(dāng)我們引入文件后,直接將考題數(shù)組數(shù)據(jù)賦給$data變量,再通過操作$data來展示題庫數(shù)據(jù)。

      3、變量題庫文件。

      所有的題庫文件均統(tǒng)一放在/data/目錄下,每個(gè)考試項(xiàng)目對(duì)應(yīng)一個(gè).php文件,想要知道有多少考試數(shù)據(jù),即多少個(gè).php文件,這里我們使用了glob()函數(shù),代碼如下:

      //統(tǒng)計(jì)題庫目錄下的“.php”文件個(gè)數(shù),此處要求題庫文件名必須是連續(xù)的數(shù)字$count = count(glob('./data/*.php'));

      glob()函數(shù)返回的是文件列表的數(shù)組,運(yùn)行g(shù)lob()函數(shù)dump輸出結(jié)果如下:

      array(3) {    [0]=>  string(12) "./data/1.php"    [1]=>  string(12) "./data/2.php"    [2]=>  string(12) "./data/3.php"}

      因?yàn)榇娣艛?shù)據(jù)的文件名都是連續(xù)的數(shù)字,便于我們通過循環(huán)讀取考題信息。

      4、匿名函數(shù)的使用。

      匿名函數(shù)就是沒有函數(shù)名的函數(shù),也稱作閉包函數(shù),經(jīng)常用作毀掉函數(shù)參數(shù)的值,對(duì)于臨時(shí)定義的函數(shù),使用匿名函數(shù)無需考慮函數(shù)命名沖突的問題。這里使用匿名函數(shù)純屬是練習(xí)的目的,我們也可以將如下的代碼封裝成一個(gè)功能函數(shù):

      $func = function ($data) use(&$func){  $result = [];  foreach ($data as $k=>$v){    //如果是數(shù)組,則繼續(xù)遞歸,如果是字符串,則轉(zhuǎn)義      $result[$k] = is_array($v) ? $func($v) : (is_string($v) ? toHtml($v) : $v);  }  return $result;};

      使用匿名函數(shù)遞歸對(duì)考題數(shù)據(jù)的特殊字符進(jìn)行轉(zhuǎn)義。

      5、轉(zhuǎn)義HTML特殊字符。

      考題中如果出現(xiàn)HTML標(biāo)記,會(huì)被瀏覽器解析,導(dǎo)致不能按照原樣輸出,因此需要對(duì)題庫中可能存在的HTML標(biāo)記進(jìn)行字符轉(zhuǎn)義,代碼如下:

      //HTML特殊字符轉(zhuǎn)義function toHtml($str){    $str=htmlspecialchars($str,ENT_QUOTES);    return str_replace(' ','&nbsp;',$str);}

      這里使用函數(shù)htmlspecialchars()函數(shù)對(duì)可能存在的特殊字符進(jìn)行轉(zhuǎn)義,這樣再輸出的時(shí)候,就能按照我們想要的格式進(jìn)行輸出。

      對(duì)應(yīng)htmlspecialchars()函數(shù)不能對(duì)空格和換行進(jìn)行轉(zhuǎn)義,要對(duì)空格進(jìn)行轉(zhuǎn)義,需要使用str_replace()函數(shù)直接替換,換行符則可以使用nl2br函數(shù)。

      6、return返回兩個(gè)值形式。

      具體代碼如下:

      function getDataInfo($data){    $count = [];            //保存某種題型的題目數(shù)量    $score = [];            //每道題的分值    foreach ($data as $k=>$v) {        $count[$k]=count($v['data']);        $score[$k]=round($v['score']/$count[$k]);    }    return [$count,$score];         //使用list()接收返回值:list($count,$score);順序依次對(duì)應(yīng)}

      代碼最后使用return返回了兩個(gè)結(jié)果變量,要接收這兩個(gè)返回值,需要使用list()來接收一個(gè)數(shù)組賦值,將數(shù)組中的元素依次賦給變量。

      7、將要用到的功能封裝成一個(gè)個(gè)功能函數(shù),方便調(diào)用,避免代碼重復(fù)。

      這里將所有用到的一些功能盡可能的都封裝為一個(gè)個(gè)函數(shù),當(dāng)使用的時(shí)候引入函數(shù)文件即可,方便管理,提高代碼利用率。

      8、使用模板

      當(dāng)使用PHP處理好數(shù)據(jù)后,在PHP文件中使用

      //引入HTML模板require './view/index.html';

      引入HTML模板,在模板中,我們同樣可以插入PHP標(biāo)簽輸出想要的數(shù)據(jù),進(jìn)行動(dòng)態(tài)的顯示數(shù)據(jù)。

      在線考試系統(tǒng)請(qǐng)選擇題庫$v): ?>          時(shí)間:分鐘 總分:分開始考試

      直接輸出一個(gè)變量:<?=$value?>

      循環(huán)輸出一組變量:<?php foreach($value as $k=>$v): ?>~~~~~~~<?php endforeach; ?>

      9、注意三元運(yùn)算符的使用。:?

      當(dāng)做一些簡單的判斷輸出時(shí),使用三元運(yùn)算符: ?可以大大的提升效率,簡化代碼。

      <!-- 答題情況 --><td><?=$v ? '對(duì)' : '錯(cuò)'?></td><!-- 得分 --><td><?=$v ? $score[$type] : 0?></td>

      上述代碼中,$v是一個(gè)bool值,通過三元運(yùn)算符我們可以省略一大堆if判斷,使代碼看上去更加整潔。

      10、頁面中的計(jì)時(shí)倒計(jì)時(shí)、關(guān)閉頁面提示、未做考題提交提示、考試時(shí)間結(jié)束自動(dòng)交卷功能是通過jQuery、javascript來實(shí)現(xiàn)的,這里不作說明。

      程序源碼下載地址:

      http://www.seoalphas.com/data/upload/ueditor/20170629/595494a1f01ea.rar

      注:php中文網(wǎng)提供大量免費(fèi)、原創(chuàng)、高清的php視頻教程,并且會(huì)定期舉行php公益培訓(xùn)!

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)