分数系统php-undefined功能

时间:2018-03-19 08:28:16

标签: php

我在php的评分系统中工作。当用户选择特定问题时,获得额外积分。 如果有人有一个可用的PHP演示版,其中包含评分系统的代码,那么他将受到欢迎。我主要需要一个工作" for"功能:

"对于问题1,如果答案是abc,则为5分,否则为0分。对于问题2,如果aswer是bcd,10分,如果答案是cft,10分,否则0分"等。  我不想用无尽的if语句来填充我的代码。 对于我当前的尝试,它显示的错误:

Fatal error: Uncaught Error: Call to undefined function value() in C:\xampp\htdocs\score.php:18 Stack trace: #0 {main} thrown in C:\xampp\htdocs\score.php on line 18

编辑:我意识到我可能没有定义"值"变量。它应该给出" 1点"的价值。目前。我该如何定义它?

<?php
// Define questions and the correct answers
$questions = array(
  'AB01' => 3,  // correct answer to question AB01 is 3
  'AB02' => 1,  // correct answer to AB02 is code 1
  'AB03' => 4,  // correct answer to AB03 is hidden behind code 4
  'AB04' => 2,
  'AB05' => 1
  // and so on
);

// Initialize counter variable
$points = 0;

// Check all questions in a loop
foreach ($questions as $variable=>$correct) {
  // Call up participant's answer
  $answer = value($variable);
  // Check and count point if applicable
  if ($answer == $correct) {
    $points++;  // synonymous with $points = $points + 1
  }
}

// Show result ...
html('<p>You have scored'.$points.' points.</p>');
// ... or store in an internal variable
put('IV01_01', $points);

// ...

// Check all questions in a loop
foreach ($questions as $variable=>$correct) {
  if (value($variable) == $correct) {
    $points++;
  }
}

// Show result or otherwise process
// ...


// Define questions and the values of possible answers
$questions = array(
  'AB01' => array(1 => 2, 2 => 5, 3 => 3),  // In question AB01, answer 1 has value 2, 2 has value 5, 3 has value 3
  'AB02' => array(1 => 5, 2 => 4, 3 => 1),  //  In question AB02, values 5 (answer 1), 4 (2) und 1 (3) are assigned
  'AB03' => array(1 => 0, 2 => 0, 3 => 5),
  'AB04' => array(1 => 4, 2 => 0, 3 => 3),
  'AB05' => array(1 => 2, 2 => 2, 3 => 5),
  // u.s.w.
);

// Initialize counter variable 
$points = 0;

// By using foreach you can just pass through the key-value pairs
foreach ($questions as $variable => $values) {
  // Call up participant's answer
  $answer = value($variable);
  // Check if there is a value available for this answer (otherwise, do not award a point)
  if (isset($values[$answer])) {
    // Count the value
    $points += $values[$answer];
  }
}

// Show result or otherwise process
html('<p>You have scored'.$points.' points.</p>');



$points = valueSum('AB01');

// Show result or otherwise process
html('<p>You have scored '.$points.' points.</p>');


// Call up list of all items
$items = getItems('AB01');

// Initialize points variable
$points = 0;

// Pass through all items
foreach ($items as $item) {
  // Question ID still has to be assembled
  $id = 'AB01_'.sprintf('%02d', $item);
  // Call up participant's answer
  $answer = value($id);
  // An error code may have been saved (e.g. -1 for "no response") 
  // Otherwise, count the answer
  if ($answer > 0) {
    $points += $answer;
  }
}

// Show result or otherwise process
html('<p>You have scored '.$points.' points.</p>');



    $points += $answer - 1;



// List of items - providing polarity in each case
$items = array(
  '01' => +1,
  '02' => -1,
  '03' => +1,
  '04' => +1,
  '05' => -1
  // and so on. 
);

// Initialization of points variable
$points = 0;

// Pass through all items
foreach ($items as $item => $polarity) {
  // Here the variable ID is built from the question and item IDs
  $id = 'AB01_'.$item;
  // Call up respondent's answer
  $answer = value($id);
  // Ignore if it is not a valid response
  if ($answer < 1) {
    // This means the rest are ignored in the FOR/FOREACH loop
    continue;
  }
  // "Invert" answers
  if ($polarity < 0) {
    // In a 5-point scale, the inverted answer code has a value of 6
    // the constant has to be adjusted for other differentations.
    $answer = 6 - $answer;
  }
  // Add up
  $points += $answer;
}

// Show result or otherwise process.
html('<p>You have scored'.$points.' points.</p>');


if (
  (value('AB01_01') == 2) and
  (value('AB01_02') == 2) and
  (value('AB01_03') == 1) and
  (value('AB01_04') == 1)
) {
  // Count point, jump to a different part, or just display a message 
  html('<p>Correct</p>');
} else {
  html('<p>Incorrect</p>');
}


// Define questions and their correct answers
// Only items are defined that will also be checked
$questions = array(
  // In question AB01, 1 and 2 have to be checked, 3 and 4 must not be checked
  'AB01' => array(1 => 2, 2 => 2, 3 => 1, 4 => 1),
  // In question AB02, 2 and 3 have to be checked, 4 must not, and the value for 1 is irrelevant
  'AB02' => array(        2 => 2, 3 => 2, 4 => 1),
  // In AB03, all 4 have to be checked
  'AB03' => array(1 => 2, 2 => 2, 3 => 2, 4 => 2),
  // and so on.
  'AB04' => array(1 => 1, 2 => 2, 3 => 1, 4 => 2),
  'AB05' => array(1 => 2, 2 => 1, 3 => 2        )
);

// Initialize counter variable
$points = 0;

// Pass through all questions
foreach ($questions as $questionId => $answers) {
  // Set the error counter for this question to 0
  $error = 0;
  foreach ($answers as $itemId => $default) {
    // Assemble item ID
    $id = $questionId.'_'.$itemId;
    // Call up participant's answer
    $answer = value($id);
    // Verify answer is correct (actually: for falsehood)
    if ($answer != $default) {
      // In the event of any deviation, count as an error
      $error++;
    }
  }
  // Check if the question has been correctly answered
  if ($error == 0) {
    // Award a point
    $points++;
  }
}

// Show result or otherwise process
html('<p>You have scored '.$points.' points.</p>');



if ($points < 10) {
  text('feedback1');
} elseif ($points < 20) {
  text('feedback2');
} else {
  text('feedback3');
}

$type = valueMean('AB01');
$use = valueMean('AB02');

if ($type < 1.5) {
  text('typeA');
} elseif ($type <= 4.5) {
  text('typeB');
} else {
  text('typeC');
}
if ($use < 2.0) {
  text('useA');
} elseif ($use < 4.0) {
  text('useB');
} else {
  text('useC');
}
?>

1 个答案:

答案 0 :(得分:0)

您需要定义一个&#34;值&#34;功能

{
   {if(rd_3$results.cluster=='Visitor' | rd_3$results.cluster=='Employee')
   rd_3<- as.data.frame(rd_3 %>% group_by(device_id,hotel,start_date) %>% mutate(visit_no.=cumsum(c(T,diff.Date(start_date) > 0))))}
{if(rd_3$results.cluster=='Guest') rd_3<- as.data.frame(rd_3 %>%
group_by(device_id,hotel) %>% mutate(visit_no.=cumsum(c(T,diff.Date(start_date) > 1))))}}