欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學堂PHP培訓分享PHP實現(xiàn)在線考試系統(tǒng)

2019-08-29 10:45:12 4704瀏覽

本篇文章扣丁學堂PHP培訓小編給小伙伴們介紹一下PHP在線考試系統(tǒng)附源碼下載,文中通過實例代碼給大家介紹了開發(fā)思路,對PHP開發(fā)技術(shù)感興趣的小伙伴就隨小編來了解一下吧,希望對小伙伴們有所幫助。

扣丁學堂PHP培訓分享PHP實現(xiàn)在線考試系統(tǒng)

說明:本篇文章是為了記錄下學習開發(fā)思路,程序不具備商業(yè)價值。


效果圖如下:


扣丁學堂PHP在線學習


題庫首頁展示:


扣丁學堂PHP在線學習視頻


試題在線測試:


扣丁學堂PHP在線視頻


分數(shù)統(tǒng)計


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


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


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


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


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


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



3、變量題庫文件


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


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


glob()函數(shù)返回的是文件列表的數(shù)組,運行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"}


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


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


匿名函數(shù)就是沒有函數(shù)名的函數(shù),也稱作閉包函數(shù),經(jīng)常用作毀掉函數(shù)參數(shù)的值,對于臨時定義的函數(shù),使用匿名函數(shù)無需考慮函數(shù)命名沖突的問題。這里使用匿名函數(shù)純屬是練習的目的,我們也可以將如下的代碼封裝成一個功能函數(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ù)遞歸對考題數(shù)據(jù)的特殊字符進行轉(zhuǎn)義。


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


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


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


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


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


6、return返回兩個值形式。


具體代碼如下:


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);順序依次對應}


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


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


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


8、使用模板


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


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


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


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


直接輸出一個變量:<?=$value?>

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


9、注意三元運算符的使用。


當做一些簡單的判斷輸出時,使用三元運算符: ?可以大大的提升效率,簡化代碼。


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


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


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


想要了解更多關于PHP開發(fā)方面內(nèi)容的小伙伴,請關注扣丁學堂PHP培訓官網(wǎng)、微信等平臺,扣丁學堂IT職業(yè)在線學習教育有專業(yè)的PHP講師為您指導,此外扣丁學堂老師精心推出的PHP視頻教程定能讓你快速掌握PHP從入門到精通開發(fā)實戰(zhàn)技能??鄱W堂PHP技術(shù)交流群:374332265。


                          JavaEE/微服務/源碼解析/分布式/企業(yè)級架構(gòu)【VIP體驗課】


     【關注微信公眾號獲取更多學習資料】        【掃碼進入JavaEE/微服務VIP免費公開課】  



查看更多關于“php培訓資訊”的相關文章>>

標簽: PHP培訓 PHP視頻教程 PHP在線視頻 PHP學習視頻 Laravel框架

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部