PHP 조건인데여..

PHP 조건인데여..

QA

SIR 제작의뢰 - 견적무료/익명보정/호스팅, DB 이전/단기개발. 이젠 ' 의뢰인'이 원하는 '제작자'에게만 연락처를 알릴 수 있습니다.

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

채택됨

SLOOP님의 답변

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

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

devdev님의 답변

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

훨씬 효율적일 겁니다.

주소복사
답변의 댓글

toqurk님의 답변

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

 

 

주소복사
답변의 댓글
sinbi님의 댓글
균이 님 해보니 아래 라인에서
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,~~~~~~); //----정답배열 <--- 이 부분을 실제 문항에 맞게 배열을 수정해야 합니다
답변을 작성하시기 전에 로그인 해주세요.
전체 82,738 | RSS
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

진행중 포인트경매

  1. SIR 코스터 (컵받침)

    참여18 회 시작20.01.17 14:03 종료20.01.22 14:03
  2. SIR 기념구 (a.k.a 냑성구)

    참여27 회 시작20.01.17 13:57 종료20.01.22 13:57

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT