A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

yinyax

初级黑马

  • 黑马币:6

  • 帖子:2

  • 精华:0

© yinyax 初级黑马   /  2020-12-9 09:10  /  1953 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我在这边随机了题目但是他结果的时候也是会随机的44行-46行 请问怎么写结果读取的时候是读取随机的题目
[PHP] 纯文本查看 复制代码
<?php
/**
 * User: alpha
 * Date: 2017/6/27
 * Time: 11:26
 * 系统方法定义文件
 */
//计算一个考题总分
function getDataTotal($data){
    $sum=0;         //考题总分
    //从题库中读取考题分数信息
    foreach ($data as $v){
        $sum += $v['score'];
    }
 
    return $sum;
}
 
//获取题库ID
function getTestId(){
    $id=isset($_GET['id']) ? (int)$_GET['id'] :1;
    //限制题库的序号最小为1
    return max($id,1);
}
 
//根据题号载入题库
function getDataById($id,$toHTML=true){
    //根据题号拼接题库文件路径
    $target="./data/$id.php";
    //判断题库文件是否存在
    if(!file_exists($target)){
        return false;
    }
    $data= require $target;
 
    $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;
    };
        shuffle($data['data']['binary']['data']);
        shuffle($data['data']['single']['data']);
        shuffle($data['data']['multiple']['data']);
    return $toHTML ? $func($data) : $data;
}
 
/**
 * 获取题库信息  返回每种题型下的试题个数和每种题型中每道题的分数
 * [url=home.php?mod=space&uid=952169]@Param[/url] array data 题库
 */
function getDataInfo($data){
    $count = [];            //保存某种题型的题目数量
    $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);顺序依次对应
}
 
//HTML特殊字符转义
function toHtml($str){
    $str=htmlspecialchars($str,ENT_QUOTES);
    return str_replace(' ',' ',$str);
}

这是得分代码
[PHP] 纯文本查看 复制代码
<?php
/**
 * User: alpha
 * Date: 2017/6/29
 * Time: 9:35
 * 考题分数统计
 */
header("Content-type:text/html;charset=utf-8");
require './common/function.php';
 
$id=getTestId();                //提交考题的序号
$data=getDataById($id,false);   //获取考题内容
 
//判断题库是否存在
if(!$data){
    require './view/404.html';
    exit;
}
 
//获取题库信息
list($count,$score)=getDataInfo($data['data']);
 
//开始阅卷操作
$sum = 0;               //保存总得分
$total=[];              //记录考试结果
 
foreach ($data['data'] as $type=>$each){
    foreach ($each['data'] as $k=>$v){
        //取出提交的答案
        $answer=isset($_POST[$type][$k])?$_POST[$type][$k] : '';
        //判断答案是否正确
        if($v['answer'] === $answer){
            $total[$type][$k] = true;
            $sum+=$score[$type];
        }else{
            $total[$type][$k]=false;
        }
    }
}
//var_dump($total);
require './view/total.html';

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马