检查多个值计数

  • 本文关键字: php arrays foreach
  • 更新时间 :
  • 英文 :


我需要检查是否包含5个学生的考试

存在来自同一班级的3名学生。

这是我尝试的

<?
//this array contains all student id's that are in an exam
$exam = array('s1' => $s1, 's2' => $s2, 's3' => $s3, 's4' => $s4, 's5' => $s5);
$values = implode(", ", $exam);
$sql = "SELECT class FROM students WHERE students.id IN (" . $values . ")";
try{
    $db = new db();
    $db = $db->connect();
    $stmt = $db->query($sql);
    $studs = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $db = null;
    if(!empty($studs)) {
        //check if 3 students from the same class are taking the exam   
        $i = 0; $s = 0;
        foreach($exam as $e )
        {
          if( !in_array( $e, $studs[$i] ) )
          {
            $exist = FALSE;
          }
          else {$s++;}
          $i++;
        }
    if ($s<=3) {
        #do sth
    }
    else {
        echo "more than 3 students";
    }
    } else {  
        echo "error";
    }
} catch(PDOException $e) {}
?>

问题我不确定的是如何计算3个学生在此考试中具有相同的类ID。

我知道我需要在我的foreach中解决一些问题,只是没有成功。

您可以要求数据库通过使用abtake a avathing a abtabase使用abtake snd将结果分组给您的ID列表中的3个或更多学生。>

选择" class",count(id)为num_students_in_class,来自学生的ID中的(1,2,3,4)组,包括count(id)> = 3

更多信息:如何在SQL Server查询中使用组?拥有和在哪里有什么区别?

如果您不想查询https://stackoverflow.com/a/46517195/100809中的建议您已经看过:

$seenClasses = array_count_values($studs);
foreach($seenClasses as $class => $numStudents) {
    if ($numStudents > 4)
        echo “class $class has $numStudents”;
}

相关内容

  • 没有找到相关文章

最新更新