PHP 中的分组结果数组

我使用数组打开文件,如果数组键中的值匹配,则将打开与值相关的文件。当我尝试时,它将打开与数据库中的数据一样多的文件。


while ($d = mysqli_fetch_array($query))

  {

    $d['grade'] = array("2", "3", "4", "5", "6");

    if(in_array("2", $d))

    {

      include "table/grade2_tab.php";

    }

    if(in_array("3", $d))

    {

      include "table/grade3_tab.php";

    }

    if(in_array("4", $d))

    {

      include "table/grade4_tab.php";

    }

    if(in_array("5", $d))

    {

      include "table/grade5_tab.php";

    }

    if(in_array("6", $d))

    {

      include "table/grade6_tab.php";

    }

  }

?>

假设我的数据库中有 6 个数据,例如:


=>grade6

=>grade6

=>grade6

=>grade6

=>grade3

=>grade2

如果数据已在数组中找到,则只需为每个键打开一个文件。如何实现这一目标?我尝试使用if but datagrade6打开四次。

https://img3.mukewang.com/650d3bcb0001bfda03990201.jpg

我不知道如何处理这个问题,我用 foreach 搜索分组数据,但我不知道用 foreach 打开文件。任何答案表示赞赏。



aluckdog
浏览 102回答 2
2回答

沧海一幻觉

创建另一个数组来保存您已经使用过的值,您还可以使用循环来大大简化代码。$grades = array("2", "3", "4", "5", "6");//create an empty array to hold grades once they are displayed$used = [];while ($d = mysqli_fetch_array($query)) {    //loop through each grade value    foreach($grades as $grade) {        //check if `$grade` is in array `$d`        //AND check if `$used[$grade]` has not been set (if it hasn't been set, it hasn't been displayed)        if(in_array($grade, $d) && !isset($used[$grade])) {            //set $used[$grade] so the previous check will fail if this grade is a duplicate            $used[$grade] = true;            //include your php file            include "table/grade{$grade}_tab.php";        }    }}此解决方案意味着您不再需要为每个等级添加 IF 块。

largeQ

尝试将可用数据存储在另一个数组上,并检查数据是否使用过$useArray = array();$d['grade'] = array("2", "3", "4", "5", "6");while ($d = mysqli_fetch_array($query)){  if(in_array("2", $d) && !in_array("2",$useArray))  {    $useArray[] = 2;    include "table/grade2_tab.php";  }  if(in_array("3", $d) && !in_array("3",$useArray))  {    $useArray[] = 3;    include "table/grade3_tab.php";  }  if(in_array("4", $d) && !in_array("4",$useArray))  {    $useArray[] = 4;    include "table/grade4_tab.php";  }  if(in_array("5", $d) && !in_array("5",$useArray))  {    $useArray[] = 5;    include "table/grade5_tab.php";  }  if(in_array("6", $d) && !in_array("6",$useArray))  {    $useArray[] = 6;    include "table/grade6_tab.php";  }}?>
打开App,查看更多内容
随时随地看视频慕课网APP