代码之家  ›  专栏  ›  技术社区  ›  Hema_Elmasry

php-仅从foreach循环中回显一个类别[关闭]

  •  0
  • Hema_Elmasry  · 技术社区  · 8 年前


    我知道这个问题有点奇怪。
    但我想知道 如果我有这样的foreach循环。
    我想显示这样的类别和常见问题解答(使用引导网格系统)
    而不使用循环类别
    而且不显示一个记录。
    我该怎么办?
    这是我的代码:

    $stmt=$con->准备(“select*from`faqs` order by`id`desc”);
    $stmt->执行();
    $rows=$stmt->fetchall();
    foreach($rows作为$row){
    echo'<article class=“row cat-”。$row[“类别”]“><section class=“常见问题解答类别col-lg-6 col-md-6 col-sm-12 col-xs-12”><h3 class=“h1”>”。$row[“类别”]。</H3></section><section class=“常见问题col-lg-6 col-md-6 col-sm-12 col-xs-12”><div class=“panel group”id=“faqaccordion-”。$row[“id”]。><DIV class=“panel panel default”><DIV class=“panel heading accordion toggle question toggle collapsed”data toggle=“collapse”data parent=“faqaccordion-”。$row[“id”]。数据目标=“问题-”。$row[“id”]。><h4 class=“panel title”><a href=“faqaccordion-”。$row[“id”]。class=“ing”>'。$row[“问题”]。</a>/lt;/h4><i class=“fa fa fw fa chevron down”aria hidden=“true”>/lt;/i>/lt;/div><div id=“question-”。$row[“id”]。class=“panel collapse collapse”style=“height:0px;”><div class=“panel body”><p class=“lead”>'。$row[“答案”]。</P>/Div>/Div>/Div>/Div>/lt;/Div></Section></Article>';
    }
    

    编辑: 我很抱歉不清楚
    我是说喜欢这张照片。

    编辑: 更清楚地说
    我的代码正在输出这个!
    当我希望输出像第一个IMG(没有类别重复 ) 我的意思是,如果他们有相同的分类,不要重复分类,像第一张图片一样对他们进行排序。

    事先谢谢!没有循环类别
    而且不显示一个记录。
    我该怎么办?
    这是我的代码:

                $stmt = $con->prepare("SELECT * FROM `FAQs` ORDER BY `ID` DESC");
                $stmt->execute();
                $rows   = $stmt->fetchAll();
                foreach ($rows as $row) {
                    echo '<article class="row cat-' . $row["Category"] . '"><section class="FAQ-category col-lg-6 col-md-6 col-sm-12 col-xs-12"><h3 class="h1">' . $row["Category"] . '</h3></section><section class="FAQ-Questions col-lg-6 col-md-6 col-sm-12 col-xs-12"><div class="panel-group" id="faqAccordion-' . $row["ID"] . '"><div class="panel panel-default"><div class="panel-heading accordion-toggle question-toggle collapsed" data-toggle="collapse" data-parent="#faqAccordion-' . $row["ID"] . '" data-target="#question-' . $row["ID"] . '"><h4 class="panel-title"><a href="#faqAccordion-' . $row["ID"] . '"class="ing">' . $row["Question"] . '</a></h4><i class="fa fa-fw fa-chevron-down" aria-hidden="true"></i></div><div id="question-' . $row["ID"] . '" class="panel-collapse collapse" style="height: 0px;"><div class="panel-body"><p class="lead">' . $row["Answer"] . '</p></div></div></div></div></section></article>';
                }
    

    编辑: 我很抱歉不清楚
    我是说喜欢这张照片。 Like This

    编辑: 更清楚地说
    我的代码正在输出这个!
    当我希望输出像第一个IMG(没有类别重复 ) 我的意思是,如果他们有相同的分类,不要重复分类,像第一张图片一样对他们进行排序。 enter image description here

    事先谢谢!

    1 回复  |  直到 8 年前
        1
  •  1
  •   Mischa    8 年前

    你的意思是这样吗?

    <div class="panel-group" id="faqAccordion">
      <?php foreach ($rows as $row) : ?>
        <article class="row cat-<?= $row['Category']; ?>">
          <section class="FAQ-category col-sm-6 col-xs-12">
            <h3><?= $row['Category']; ?></h3>
          </section>
          <section class="FAQ-Questions col-sm-6 col-xs-12">
            <div class="panel panel-default">
              <div class="panel-heading">
                <h4 class="panel-title">
                  <a href="#question-<?= $row['ID']; ?>" data-toggle="collapse" data-target="#question-<?= $row['ID']; ?>">
                    <?= $row['Question']; ?>
                  </a>
                </h4>
              </div>
              <div id="question-<?= $row['ID']; ?>" class="panel-collapse collapse">
                <div class="panel-body">
                  <p class="lead"><?= $row['Answer']; ?></p>
                </div>
              </div>
            </div>
          </section>
        </article>
      <?php endforeach; ?>
    </div>
    

    编辑: 好的,然后按照描述的索引“category”对数组进行分组 here :

    function groupByIndex($array, $index) {
        $result = array();
        foreach($array as $val) {
            $result[$val[$index]][] = $val;
        }
        return $result;
    }
    
    $faqsByCategory = groupByIndex($rows, 'Category');
    

    然后,您可以在如下两个嵌套循环中输出常见问题:

    <?php foreach ($faqsByCategory as $category => $faqs) : ?>
    <article class="row cat-<?= $category ?>">
      <section class="FAQ-category col-sm-6">
        <h3><?= $category; ?></h3>
      </section>
      <section class="FAQ-Questions col-sm-6">
        <div class="panel-group">
        <?php foreach ($faqs as $key => $faq): ?>
          <div class="panel panel-default">
            <div class="panel-heading">
              <h4 class="panel-title">
                <a href="#question-<?= $faq['ID']; ?>" data-toggle="collapse" data-target="#question-<?= $faq['ID']; ?>">
                  <?= $faq['Question']; ?>
                </a>
              </h4>
            </div>
            <div id="question-<?= $faq['ID']; ?>" class="panel-collapse collapse">
              <div class="panel-body">
                <p class="lead"><?= $faq['Answer']; ?></p>
              </div>
            </div>
          </div>
        <?php endforeach; ?>
        </div>
      </section>
    </article>
    <?php endforeach; ?>
    
    推荐文章