【问题标题】:Warp two row with a class after query查询后用一个类扭曲两行
【发布时间】:2016-01-04 10:32:57
【问题描述】:

我想用一个类来扭曲每两行。因此,我从这里看到了一些指南并进行了谷歌搜索,并找到了 foreach array_chunk 来执行此操作。我尝试如下无法显示任何结果。没有 foreach 它的工作很好。请问这里是我的错吗?

上图中我想做的;我的每两个类别都带有一个类。并在每个顶级类别后添加一个分隔符。

这是我的尝试:

echo '<ul class="dropdown-menu dropdown-menu-large row">';
    $sql = "SELECT id,name FROM main_cata ORDER BY id ASC";
    $execute = $dbh->query("$sql");
    $rowcount = $execute->num_rows ;
    $row = $dbh->query($sql) ; 

    while ($row = $execute->fetch_assoc()) {

         foreach (array_chunk($row, 2, true) as $array){
             echo'<li class="col-sm-3">';

             foreach($array as $rows){
                  echo '<ul><li class="dropdown-header">'.$rows->name.'</li>';

                  $sql2 = "SELECT id,name,page FROM catagory WHERE m_cata = '".$rows->id."' ORDER BY id ASC";
                  $execute2 = $dbh->query("$sql2");
                  $rowcount2 = $execute2->num_rows ;
                  $row = $dbh->query($sql) ; 
                  while ($row = $execute2->fetch_assoc()) {
                  $cid = $row['id'];
                  $cname = $row['name'];    
                  $page = $row['page'];
                  echo '<li><a href="#">'.$cname.'</a></li>';
                  }
                  echo '<li class="divider"></li></ul>';
              }
              echo '</li>'; 
         }       
    }
echo '</ul>';

【问题讨论】:

    标签: php arrays mysqli foreach


    【解决方案1】:
    while ($row = $execute->fetch_assoc()) {
    

    fetch_assoc 从查询中返回 1 行 (id, name),然后您使用结果并拆分为 2 (https://secure.php.net/manual/pt_BR/mysqli-result.fetch-assoc.php),您可以做的是,制作一个计数器而不是每次达到 2 时重置的数组块。

    foreach (array_chunk($row, 2, true) as $array){
    

    $row 的内容例如是array('id' => 1, 'name' => 'Category 1')。

    foreach($array as $rows){
    

    您无需再次迭代。


    一个简单的版本:

    counter = 0;
    echo "<ul>";
    while (row = execute->fetch_assoc()) {
         if (counter == 0) {
            echo "init li";
         }
    
        echo "subinit li";
        get subcategories
        while (row2 = execute2->fetch_assoc()) {
             print content
        }
        echo "subend li";    
    
        if (counter == 2) {
            counter == 0;
            echo "end li";
        } else {
            counter++;
            echo "divider";
        }
    }
    echo "</ul>";
    

    【讨论】:

      猜你喜欢
      • 2017-04-19
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多