当前位置: 首页 > 知识库问答 >
问题:

嵌套的foreach循环目录和产品

丁阳羽
2023-03-14

我有以下表格:

类别:category_id,category_name

产品:标识、类别标识、产品名称

我使用的是Bootstrap4,我想将每个类别显示为手风琴标题,并在手风琴主体中列出属于该类别的所有产品。

使用PHP7

    function getProducts(){
        $db = new DB();
        $rows = $db->db_select("SELECT category.category_id, category.category_name, products.id, products.category_id, products.product_name
                FROM products 
                INNER JOIN category ON products.id = category.category_id 
                ORDER BY category.category_name 
                ");
        if($rows === false){
            $error = db_error();
        } else {
            return $rows;
        }
    }   

$data = new CORE();
$products = $data->getProducts();



<div class="accordion" id="accordionExample">
<? foreach($products as $p){ ?>
  <div class="card">
    <div class="card-header" id="headingOne">
      <h5 class="mb-0">
        <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
          <? echo $p['category_name'] ?>
        </button>
      </h5>
    </div>

    <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">
      <div class="card-body">
        <? echo $p['product_name'] ?>
      </div>
    </div>
  </div>
<? } ?>
</div>

数据库数据:

共有3个答案

林和畅
2023-03-14

如果将产品重新分类,请尝试此查询

$this->db->join('products','products.category_id = categories.category_id')
->order_by('categories.category_id')->get('categories')->result_array();
萧元徽
2023-03-14

首先,我调用两个函数来获取类别和产品,如下所示。

function getCategories(){
        $db = new DB();
        $rows = $db->db_select("SELECT category.category_id, category.category_name FROM Categories");
        if($rows === false){
            $error = db_error();
        } else {
            return $rows;
        }
    }   
    function getProducts(){
        $db = new DB();
        $rows = $db->db_select("SELECT products.id, products.category_id, products.product_name
                FROM products ");
        if($rows === false){
            $error = db_error();
        } else {
            return $rows;
        }
    }   

$data = new CORE();
$categories = $data->getCategories();
$products = $data->getProducts();

然后我递归地使用这些数组在Foreach循环中。关键是,在这里我使用两个1Foreach'循环,第一个循环等待,直到第二个循环(内部)完成那里的过程。

//Take the first value of array and then second value and so on.

     foreach($Categories as $Category){

     echo $Category['name'];

//Take the first value of array and then second value and so on.

foreach($Products as $Product){

//Check the current category id with current product id. In here **category id dosent get changes untill products foreach loop completed**.

if( $Category['category_id'] == $Product['category_id'] ) {

  echo $Product['name'];
}
}
}
胡劲
2023-03-14

您可以将查询更改为这样的内容:

SELECTcategory.category,GROUP_CONCAT(products.id , '|', products.name)AS产品从类别INNER JOIN产品ONcategory.category_id=products.category_idGROUP BY<--代码代码


分类产品帽子8|快照,9|适合的裤子6|慢跑,7|剪裁衬衫1|马球,2|长袖,3|Vback鞋5|靴子,4|匡威

 类似资料:
  • 这是我的代码。我遇到的问题是,我希望将HP在我的PHP代码中的数字转换为我的HP HTML代码,以及与Cylinder相同的内容。我已经想好了其他的东西,但说到这一部分我就卡住了

  • 我有一个这样的数组 我想做的是前面的模型,为其数量绘制徽标,因此三星=3,索尼=7,以此类推,将绘制3个索尼徽标和7个三星徽标。 我想出了这样的办法 但是当然,所有这些都是为了每个数组条目,呼应出名称,所以我最终打印了5个三星,打印了5个索尼,等等。 如何使其使用 qty 数组的值而不是条目数?

  • 我的代码有一个问题,它有两个嵌套的foreach循环: 所以我在“消息”中有2个条目,在“评论”中有4个条目,第一个条目为“消息”,第二个条目为2。我想要: 消息1-评论1-评论2 消息2-注释3-注释4 这就是我所拥有的: 消息1-评论1-评论2 消息2-注释1-注释2-注释3-注释4 我搜索了两个小时,在mysqli中没有找到解决方案:((当我找到时 mysqli_data_seek($com

  • 我正在寻找一种用函数式编程方法替换嵌套foreach循环的方法。情况是这样的: 目前我的代码是这样的: 这将生成如下所示的输出: 有谁知道如何用函数式编程替代方案替换foreach代码块?

  • 数据库表: 胶片(id\U胶片主键,名称) 流派(id_genrePK,名称) film_genre(id_filmFK,id_genreFK) 这将输出流派表中的所有流派: 这将输出特定电影的电影类型表中的所有选定类型: 我有一个问题,从数据库输出数据到多个选定的列表中的形式。这是一个电影数据库,我正在进行Foreach迭代,以读取电影流派的所有行,并输出到多个选择字段。但是我在向列表输出“选定

  • 问题内容: 我想为迭代嵌套循环添加并发性,但是遇到了麻烦。这个示例使用sync.WaitGroup有什么问题? 我越来越 PRS AAC PRS AAC PRS AAC PRS AAC PRS AAC PRS AAC 因此,您可能会看到它跳过了两个数组的第一个元素,而仅迭代了最后一个元素。任何想法如何解决此问题? 问题答案: 这是一个关闭问题。您需要将值传递到循环内的goroutine中,如下所示