为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 中的分组结果数组

PHP 中的分组结果数组

PHP
aluckdog 2023-09-22 15:00:43
我使用数组打开文件,如果数组键中的值匹配,则将打开与值相关的文件。当我尝试时,它将打开与数据库中的数据一样多的文件。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打开四次。我不知道如何处理这个问题,我用 foreach 搜索分组数据,但我不知道用 foreach 打开文件。任何答案表示赞赏。
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

创建另一个数组来保存您已经使用过的值,您还可以使用循环来大大简化代码。


$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 块。


查看完整回答
反对 回复 2023-09-22
?
largeQ

TA贡献2039条经验 获得超7个赞

尝试将可用数据存储在另一个数组上,并检查数据是否使用过


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

  }

}

?>


查看完整回答
反对 回复 2023-09-22
  • 2 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信