php 온라인 시험 시스템 구현[소스 코드 첨부]
효과 도 는 다음 과 같다.
문제 집 첫 페이지 전시
시험 문제 온라인 테스트
점수 통계
이 작은 프로젝트 를 통 해 PHP 기초 지식 을 연습 하고 배열 작업 을 통 해 시험 문제 정보 저장 소 를 불 러 오고 템 플 릿 파일 을 도입 하여 시험 문제 데이터 호출 구 조 를 실현 하 는 것 이 목적 입 니 다.
1.작은 항목 이 데이터 베 이 스 를 사용 하지 않 기 때문에 시험 문 제 는 PHP 파일 에 배열 형식 으로 저장 되 고 일부 코드 는 다음 과 같 습 니 다.
<?php// return [
// 'title' => 'PHP ( )', // ( )
'timeout' => 1200, //
'data' => [ //
'binary' => [
'name' => ' ', //
'score' => 24, //
'data' => [
1 => [
'question' => ' ".php" , PHP "<?php ?>" 。',
'answer' => 'no'
], 2=> [
'question' => ' 、 、 。',
'answer' => 'no'
], 3=> [
'question' => 'var_dump PHP 。',
'answer' => 'yes'
]
]
], //
'single' => [
'name' => ' ',
'score' => 40,
'data' => [
1 => [
'question' => ' , ( )。',
'option' => [
' ',' ',' ',' '
],
'answer' => 'A'
], 2=> [
2.그러면 시험 문제 데 이 터 를 어떻게 얻 나 요?파일 을 가 져 오 면 됩 니 다.
$data=require "./data/1.php";
위의 시험 문제 파일 은 return 으로 돌아 오 는 배열 입 니 다.파일 을 도입 한 후에 시험 문제 배열 데 이 터 를$data 변수 에 직접 부여 하고$data 를 조작 하여 문제 라 이브 러 리 데 이 터 를 보 여 줍 니 다.3.변수 라 이브 러 리 파일.
모든 문제 라 이브 러 리 파일 은/data/디 렉 터 리 에 통일 되 어 있 습 니 다.각 시험 항목 은 하나의.php 파일 에 대응 합 니 다.시험 데이터 가 얼마나 있 는 지 알 고 싶 습 니 다.즉,몇 개의.php 파일 입 니 다.여기 서 우 리 는 glob()함 수 를 사 용 했 습 니 다.코드 는 다음 과 같 습 니 다.
// “.php” , $count = count(glob('./data/*.php'));
glob()함 수 는 파일 목록 의 배열 을 되 돌려 줍 니 다.glob()함수 dump 출력 결 과 는 다음 과 같 습 니 다.
array(3) {
[0]=> string(12) "./data/1.php"
[1]=> string(12) "./data/2.php"
[2]=> string(12) "./data/3.php"}
데 이 터 를 저장 하 는 파일 이름 은 모두 연속 적 인 숫자 이기 때문에 시험 문제 정 보 를 순환 적 으로 읽 을 수 있 습 니 다.4.익명 함수 의 사용.
익명 함 수 는 함수 이름 이 없 는 함수 로 폐쇄 함수 라 고도 부 르 며 함수 매개 변 수 를 파괴 하 는 값 으로 자주 사용 되 며,임시 정 의 된 함수 에 대해 서 는 익명 함 수 를 사용 하여 함수 이름 충돌 문 제 를 고려 하지 않 아 도 됩 니 다.여기 서 익명 함 수 를 사용 하 는 것 은 순 전 히 연습 의 목적 입 니 다.우 리 는 다음 과 같은 코드 를 하나의 기능 함수 로 포장 할 수 있 습 니 다.
$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;};
익명 함수 재 귀 를 사용 하여 시험 문제 데이터 의 특수 문 자 를 전의 합 니 다.5.전의 HTML 특수 문자.
시험 문제 에 HTML 태그 가 나타 나 면 브 라 우 저 에 의 해 해석 되 어 그대로 출력 할 수 없 기 때문에 문제 라 이브 러 리 에 존재 할 수 있 는 HTML 태그 에 대해 문자 전 의 를 해 야 합 니 다.코드 는 다음 과 같 습 니 다.
//HTML function toHtml($str)
{ $str=htmlspecialchars($str,ENT_QUOTES);
return str_replace(' ',' ',$str);
}
함수 html specialchars()함 수 를 사용 하여 존재 할 수 있 는 특수 문 자 를 전의 합 니 다.이렇게 다시 출력 할 때 우리 가 원 하 는 형식 으로 출력 할 수 있 습 니 다.html specialchars()함수 에 대응 하여 빈 칸 과 줄 을 바 꿀 수 없습니다.빈 칸 을 바 꾸 려 면 str 를 사용 해 야 합 니 다.replace()함 수 는 직접 교체 하고 줄 바 꿈 자 는 nl2br 함 수 를 사용 할 수 있 습 니 다.
6.return 은 두 가지 값 형식 을 되 돌려 줍 니 다.
구체 적 인 코드 는 다음 과 같다.
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); }
코드 는 마지막 으로 return 을 사용 하여 두 개의 결과 변 수 를 되 돌려 주 었 습 니 다.이 두 개의 반환 값 을 받 으 려 면 list()를 사용 하여 한 배열 의 할당 을 받 고 배열 의 요 소 를 순서대로 변수 에 부여 해 야 합 니 다.7.사용 할 기능 을 하나의 기능 함수 로 밀봉 하여 호출 이 편리 하고 코드 가 중복 되 지 않도록 합 니 다.
여기에 사용 되 는 모든 기능 을 가능 한 한 하나의 함수 로 봉 하여 사용 할 때 함수 파일 을 도입 하면 관리 하기 편리 하고 코드 이 용 률 을 높 일 수 있다.
8.템 플 릿 사용
PHP 로 데 이 터 를 처리 한 후,PHP 파일 에서 사용
// HTML require './view/index.html';
HTML 템 플 릿 을 도입 합 니 다.템 플 릿 에 도 PHP 탭 을 삽입 하여 원 하 는 데 이 터 를 출력 하고 동적 으로 데 이 터 를 표시 할 수 있 습 니 다.
$v): ?>
: :
변 수 를 직접 출력 합 니 다:<?=$value?>
순환 출력 변수:<?php foreach($value as $k=>$v): ?>~~~~~~~<?php endforeach; ?>
9.3 원 연산 자의 사용 에 주의 하 세 요.:?출력 을 간단하게 판단 할 때 3 원 연산 자 를 사용 합 니 다.?효율 을 크게 향상 시 키 고 코드 를 간소화 할 수 있다.
<!-- -->
<td><?=$v ? ' ' : ' '?>
</td><!-- -->
<td><?=$v ? $score[$type] : 0?>
</td>
상기 코드 에서$v 는 bool 값 입 니 다.3 원 연산 자 를 통 해 우 리 는 많은 if 판단 을 생략 하여 코드 를 더욱 깨끗하게 보일 수 있 습 니 다.10.페이지 의 시간 카운트다운,페이지 알림 닫 기,시험 문제 제출 알림 하지 않 음,시험 시간 종료 자동 답안 지 제출 기능 은 jQuery,javascript 을 통 해 이 루어 집 니 다.여 기 는 설명 하지 않 습 니 다.
마지막 으로 프로그램 소스 코드 다운로드 주 소 를 동봉 합 니 다.다운로드 하려 면 여 기 를 누 르 십시오
총결산
위 에서 말 한 것 은 소 편 이 소개 한 PHP htmphp 가 온라인 시험 시스템 의 소스 코드 를 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.