Heim >häufiges Problem >Online-Prüfungstrainingssystem für die PHP-Entwicklung

Online-Prüfungstrainingssystem für die PHP-Entwicklung

angryTom
angryTomnach vorne
2020-02-22 12:12:002640Durchsuche

Online-Prüfungstrainingssystem für die PHP-Entwicklung

PHP-Entwicklung Online-Prüfungstrainingssystem

Hinweis: In diesem Artikel werden Lern- und Entwicklungsideen und -verfahren aufgezeichnet Hat keinen kommerziellen Wert. Die kommerzielle Nutzung erfordert ein zweites Upgrade.

(Empfohlenes Lernen: PHP-Schulung)

Die Darstellung ist wie folgt:

Online-Prüfungstrainingssystem für die PHP-Entwicklung

Frage Anzeige der Bank-Homepage

Online-Prüfungstrainingssystem für die PHP-Entwicklung

Online-Test von Testfragen

Online-Prüfungstrainingssystem für die PHP-Entwicklung

Ergebnisstatistik

Der Zweck von In diesem kleinen Projekt werden die Grundlagen des PHP-Wissens geübt. Durch Array-Operationen werden die Testfrageninformationen gespeichert und geladen sowie Vorlagendateien eingeführt, um das Aufruflayout der Testfragendaten zu realisieren.

1. Da das kleine Projekt keine Datenbank verwendet, werden die Testfragen in Form von Arrays wie folgt gespeichert:

Hinweis: Der folgende Code ist ein sehr komplexes Chaos. . Sie können den Quellcode des Programms am Ende des Artikels herunterladen und ihn in diesem Blogbeitrag ansehen.

<?php
// 考试题库二
return [   
// 题库标题  
&#39;title&#39; => &#39;PHP基础语法考试题(二)&#39;,   
// 答题时限(秒数) 
&#39;timeout&#39; => 1200,   
// 题库   
&#39;data&#39; => [      
// 判断题 
&#39;binary&#39; => [       
          &#39;name&#39; => &#39;判断题&#39;, 
        // 题型名称
&#39;score&#39; => 24,     
        // 题型分数 
&#39;data&#39; => [          
          1 => [       
          &#39;question&#39; => &#39;在".php"后缀的文件中,所有的PHP代码都只能写在"<?php ?>"标记内。&#39;,               &#39;answer&#39; => &#39;no&#39;            ], 
        2=> [           
            &#39;question&#39; => &#39;标量类型包括布尔型、整型、字符串型和数组型。&#39;,               &#39;answer&#39; => &#39;no&#39;            ], 
        3=> [    
                  &#39;question&#39; => &#39;var_dump是PHP中用于打印变量或表达式的类型与值等相关信息的函数。&#39;,              
         &#39;answer&#39; => &#39;yes&#39;        
            ]        
         ]    
          ],      
        // 单选题  
&#39;single&#39; => [     
            &#39;name&#39; => &#39;单选题&#39;,         &#39;score&#39; => 40
        ,         &#39;data&#39; => [ 
                   1 => [               
        &#39;question&#39; => &#39;下列选项中,不区分大小写的标识符是( )。&#39;,               &#39;option&#39; => [                  &#39;函数名&#39;,&#39;常量名&#39;,&#39;变量名&#39;,&#39;属性名&#39;               ],               &#39;answer&#39; => &#39;A&#39;            ], 2=> [

2. Wie erhält man also die Testfragendaten? Importieren Sie einfach die Datei

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

Beachten Sie, dass die obige Testfragendatei ein von return zurückgegebenes Array ist. Wenn wir die Datei importieren, weisen wir die Testfragen-Array-Daten direkt der Variablen $data zu , und bedienen Sie dann $ data, um die Fragenbankdaten anzuzeigen.

3. Variable Fragenbankdatei.

Alle Fragenbankdateien werden im Verzeichnis /data/ abgelegt. Jedes Testelement entspricht einer .php-Datei. Wenn Sie wissen möchten, wie viele Testdaten vorhanden sind. Es gibt PHP-Dateien, hier verwenden wir die Funktion glob() und der Code lautet wie folgt:

//统计题库目录下的“.php”文件个数,此处要求题库文件名必须是连续的数字$count = count(glob(&#39;./data/*.php&#39;));

Die Funktion glob() gibt ein Array von Dateilisten zurück. Das Dump-Ausgabeergebnis der Ausführung von glob(. )-Funktion lautet wie folgt:

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

Da die Dateinamen zum Speichern von Daten alle fortlaufende Nummern sind, was es für uns einfacher macht, Testfrageninformationen durch Schleifen zu lesen.

4. Nutzung anonymer Funktionen.

Eine anonyme Funktion ist eine Funktion ohne Funktionsnamen, die auch als Abschlussfunktion bezeichnet wird. Sie wird häufig verwendet, um den Wert von Funktionsparametern zu zerstören. Bei temporär definierten Funktionen ist die Verwendung anonymer Funktionen nicht erforderlich Frage zu Funktionsbenennungskonflikten. Die hier verwendete anonyme Funktion dient ausschließlich Übungszwecken. Wir können den folgenden Code auch in eine funktionale Funktion kapseln:

$func = function ($data) use(&$func){  $result = [];  foreach ($data as $k=>$v){    //如果是数组,则继续递归,如果是字符串,则转义      $result[$k] = is_array($v) ? $func($v) : (is_string($v) ? toHtml($v) : $v);  }  return $result;};

Verwenden Sie die anonyme Funktion, um die Sonderzeichen der Testfragedaten rekursiv zu maskieren.

5. Escape-HTML-Sonderzeichen.

Wenn HTML-Tags in den Testfragen vorkommen, werden sie vom Browser analysiert und können nicht so ausgegeben werden, wie sie sind. Daher ist es notwendig, die HTML-Tags, die möglicherweise in der Frage vorhanden sind, mit Zeichen zu maskieren Der Code lautet wie folgt:

//HTML特殊字符转义function toHtml($str){    $str=htmlspecialchars($str,ENT_QUOTES);    return str_replace(&#39; &#39;,&#39; &#39;,$str);}

Hier verwenden wir die Funktion htmlspecialchars(), um mögliche Sonderzeichen zu maskieren, damit wir sie bei der Ausgabe in dem von uns gewünschten Format ausgeben können.

Die entsprechende htmlspecialchars()-Funktion kann Leerzeichen und Zeilenumbrüche nicht maskieren, Sie müssen die Funktion str_replace() verwenden, um sie direkt zu ersetzen. Für Zeilenumbrüche können Sie die Funktion nl2br verwenden.

6. return gibt zwei Wertformen zurück.

Der spezifische Code lautet wie folgt:

function getDataInfo($data){    $count = [];            //保存某种题型的题目数量    $score = [];            //每道题的分值    foreach ($data as $k=>$v) {        $count[$k]=count($v[&#39;data&#39;]);        $score[$k]=round($v[&#39;score&#39;]/$count[$k]);    }    return [$count,$score];         //使用list()接收返回值:list($count,$score);顺序依次对应}

Der Code verwendet schließlich return, um zwei Ergebnisvariablen zurückzugeben. Um diese beiden Rückgabewerte zu erhalten, müssen Sie list( verwenden. ), um eine Array-Zuweisung zu erhalten, weist Elemente im Array nacheinander Variablen zu.

7. Kapseln Sie die zu verwendenden Funktionen in funktionale Funktionen, um den Aufruf zu vereinfachen und Codeduplizierungen zu vermeiden.

Hier werden alle verwendeten Funktionen so weit wie möglich in Funktionen gekapselt. Führen Sie bei Verwendung einfach die Funktionsdatei ein, um die Verwaltung zu erleichtern und die Codenutzung zu verbessern.

8. Verwenden Sie Vorlagen

Nachdem Sie PHP zum Verarbeiten der Daten verwendet haben, verwenden Sie

//引入HTML模板require &#39;./view/index.html&#39;;

, um die HTML-Vorlage in die PHP-Datei einzuführen Vorlage, Wir können auch PHP-Tags einfügen, um die gewünschten Daten auszugeben und die Daten dynamisch anzuzeigen.

在线考试系统请选择题库$v): ?>
         时间:分钟 总分:分开始考试

Eine Variable direkt ausgeben: =$value?>

Schleife zur Ausgabe einer Reihe von Variablen: $ v) : ?>~~~~~~

9. :?

当做一些简单的判断输出时,使用三元运算符: ?可以大大的提升效率,简化代码。

<!-- 答题情况 --><td><?=$v ? &#39;对&#39; : &#39;错&#39;?></td><!-- 得分 --><td><?=$v ? $score[$type] : 0?></td>

上述代码中,$v是一个bool值,通过三元运算符我们可以省略一大堆if判断,使代码看上去更加整洁。

10、页面中的计时倒计时、关闭页面提示、未做考题提交提示、考试时间结束自动交卷功能是通过jQuery、javascript来实现的,这里不作说明。

程序源码下载地址:

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

注:php中文网提供大量免费、原创、高清的php视频教程,并且会定期举行php公益培训

Das obige ist der detaillierte Inhalt vonOnline-Prüfungstrainingssystem für die PHP-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen