테스트 사이트 - 개발 중인 베타 버전입니다

PHP 조건인데여.. 채택완료

내쿠 5년 전 조회 3,755

객관식 퀴즈문제 5문제가 있습니다.

배열로 나오게 됩니다.

     정답           내선택

   $arr['0']           $q1

   $arr['1']           $q2

   $arr['2']           $q3

   $arr['3']           $q4

   $arr['4']           $q5

 

------------------------------------------

예) 

     정답       내선택      결과

       2            3            X

       4            2            X

       2            4            X

       3            3            O

       1            1            O

-------------------------------------------

결과를 이용하여  점수를 구하고자 합니다. ( 위의 경우  40점  ) 2/5*100

초보임...

if( $arr[$I] ==  $q$I)

{

}

좀 도와주십쇼  아ㅇ

------------------------------------------------------------------

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
SLOOP
5년 전

</p>

<p>$score = 0;

$arr   = [2, 4, 2, 3, 1];</p>

<p>$q1 = 3;

$q2 = 2;

$q3 = 4;

$q4 = 3;

$q5 = 1;</p>

<p>foreach ($arr as $k => $v) {</p>

<p>    $answer = ${'q' . ($k + 1)};</p>

<p>    if ($v == $answer) {

        $score++;

    }

}</p>

<p>echo ($score / count($arr)) * 100;</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

내쿠
5년 전
좋은데요 ..40 나옵니다 위 예에서는 / 그런데 정답/선택 값이 고정적이지 않아서요
1번에서 5번까지라면 모르지만 문제수가 100개 정도 되면..어찌할지
s
sinbi
5년 전
상관없을 것 같은데요.
아래처럼 점수를 구하니까요.

(맞은개수/문제개수) * 100
내쿠
5년 전
참고하여 아래와 같이 하여 일단 원하는 답을 얻었습니다.
<?php

$sum=0;
for($i=0; $i < 5; $i++){ //숫자"5" 대신 변수를 사용할 것입니다.
if($arr[$i]==${'q'.($i+1)}) //이표현이 무척 어려웟습니다. ${'q'.($i+1)};
{
$sum=$sum+1;

//echo ${'q'.($i+1)};
}
}
$avg = $sum/5*100; //숫자"5" 대신 변수를 사용할 것입니다.
//echo "합계: " . $sum . "<br />";
echo "점수: " . $avg;
?>

--------------------------
댓글 모두 큰 도움이 되었습니다.
도움주신 모든 분께 감사드립니다.

댓글을 작성하려면 로그인이 필요합니다.

5년 전

<form name='test' action='answer_check.php' method='post'>

문1. ~~~체크하시오

<input name='ans1' value='1'>일이요 <input name='ans1' value='2'>이요

<input name='ans1' value='3'>삼이요

 

문2. ~~~체크하시오

<input name='ans2' value='1'>일이요 <input name='ans2' value='2'>이요

<input name='ans2' value='3'>삼이요

~~~

문100. ~~~체크하시오

<input name='ans100' value='1'>일이요 <input name='ans100' value='2'>이요

<input name='ans100' value='3'>삼이요

 

<input type='submit' value='정답제출'>

</form>

 

answer_check.php

<?php

$k = 100; //문항수

$ansArr=array(2,4,2,3,1,~~~~~~); //----정답배열

 

for($i=1; $i<= $k; $i++){

 $ans = 'ans'.$i;

 if($_POST[$ans] && $ansArr[$i] == $_POST[$ans]) $nn++;

}

 

정답수 : <?=$nn?>

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

s
sinbi
5년 전
균이 님 해보니 아래 라인에서
if($_POST[$ans] && $ansArr[$i] == $_POST[$ans]) {

이런 에러가 발생하는데, 왜 그런걸까요? 아무리 봐도 이상이 없어 보이는데..
Notice: Undefined offset: 3 in ... answer_check.php on line 8
균이
5년 전
코드에 빠진 것이 있군요

다음처럼 모두 type='radio' 를 넣으세요
<input name='ans1' value='1'> -----> <input name='ans1' value='1' type='radio'>

if($_POST[$ans] && $ansArr[$i] == $_POST[$ans]) $nn++; ----->
if( isset($_POST[$ans]) && $ansArr[$i] == $_POST[$ans]) $nn++;

그리고 위 소스 그대로 테스트할 때는
$k = 100; //문항수 <----- 실제 문항수로 변경
$ansArr=array(2,4,2,3,1,~~~~~~); //----정답배열 <--- 이 부분을 실제 문항에 맞게 배열을 수정해야 합니다

댓글을 작성하려면 로그인이 필요합니다.

$arr= "2,4,2,3,1";
$q_ha="3,2,4,3,1";
$arr_a = explode(",", $arr);
$q_ha_a = explode(",", $q_ha);
$g_h=0;
for($i=0;$i<count($q_ha_a);$i++){
    if($arr_a[$i]==$q_ha_a[$i])
     $g_h=$g_h*1+20;
}

echo $g_h;

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

내쿠
5년 전
정답/선택 값이 고정적이지 않아서요 ;;
한번 해보겠습니다.^
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

toqurk
5년 전

$hap = "0";

for( $i=0; $i < count($arr); $i++){

if( $arr[$I] ==  $q$I)

{

$hap++;

}

}

 

if($hap > 0){

  $total_hap = $hap * 20;

}

echo $total_hap;

으로..해보심이..ㅎㅎ

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

내쿠
5년 전
에러가 어디서 나는 걸까요...생각중입니다만..
if( $arr[$I] == $q$I) // 이부분은 $q$I+1 //이거 한 번 봐 주세요..
감사합니다;;
t
toqurk
5년 전
$q_c = $q.$I;

댓글을 작성하려면 로그인이 필요합니다.

d
5년 전

작업이안되는 건 아닌데..  $q1  이것도 배열로 받는 방안을 생각해보세요.

훨씬 효율적일 겁니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

내쿠
5년 전
네...저로서는 오랜생각을...ㅎ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인