PHP 조건인데여..

PHP 조건인데여..

QA

PHP 조건인데여..

본문

객관식 퀴즈문제 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


$score = 0;
$arr   = [2, 4, 2, 3, 1];
$q1 = 3;
$q2 = 2;
$q3 = 4;
$q4 = 3;
$q5 = 1;
foreach ($arr as $k => $v) {
    $answer = ${'q' . ($k + 1)};
    if ($v == $answer) {
        $score++;
    }
}
echo ($score / count($arr)) * 100;

참고하여 아래와 같이 하여 일단 원하는 답을 얻었습니다.
<?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;
?>

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

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

훨씬 효율적일 겁니다.

$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;

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

$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;

<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?>

 

 

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

이런 에러가 발생하는데, 왜 그런걸까요? 아무리 봐도 이상이 없어 보이는데..
Notice: Undefined offset: 3 in ... answer_check.php on line 8

코드에 빠진 것이 있군요

다음처럼 모두 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,~~~~~~); //----정답배열 <--- 이 부분을 실제 문항에 맞게 배열을 수정해야 합니다

답변을 작성하시기 전에 로그인 해주세요.
전체 756
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT