Codeigniter在幻灯片中嵌套foreach?

时间:2013-01-16 15:59:29

标签: codeigniter loops foreach nested

我在其他帖子上问这个https://stackoverflow.com/a/14277726/1670630,但我的问题仍然存在。 在codeigniter 2.1中我试图按类别显示频道。所以,如果我有一个名为电影的类别,我应该看到电影中的频道列表。我尝试了一个嵌套的foreach循环来完成这个,但似乎无法让它在slidshow中工作并限制行数。 我的模特:

<?php

class Pages_model extends CI_Model {


function get_channels_by_categ_tv()
{

  $this->db->select('categories.category_name, channels.channel_name');
  $this->db->from('type_categ');
  $this->db->join('categories', 'categories.category_id = type_categ.category_id');
  $this->db->join('channels', 'channels.channel_id = type_categ.channel_id');
  $this->db->order_by('categories.category_id');
//$this->db->group_by(array('categories.category_id')); 
  $query = $this->db->get();

  if($query->num_rows() == 0)
  {
    #no channels
    return false;
  }

  return $query->result_array();
}

}

我在视图中有这个:

<ul class="slides">
   <li>
      <?php $cat_shown = ''; ?>
         <div class="programe-tv_link">
                <?php $cat_show = ''; $cnl_show = '';?>
                <?php foreach ($category_chaneels as $category): ?>
                    <?php
                    if ($cat_show != $category['category_name']) {
                        $cat_show = $category['category_name'];
                        echo '<p>' . $cat_show . '</p>'; 
                    }
                    $cnl_show = $category['channel_name'];
                    echo '<dd><a href=""> >>' . $cnl_show . '</a></dd> '; 
                    ?>    
                <?php endforeach; ?>  
          </div>
     </li>
     <li>
              <div class="programe-tv_link">
                    <p>Arte</p>
                   <dd> <a href="">>> Acasa</a></dd>
                   <dd> <a href="">>> Antena 1</a></dd>
                   <dd> <a href="">>> Pro TV</a></dd>
                </div>
                <div class="programe-tv_link">
                    <p>Music Box</p>
                   <dd> <a href="">>> Acasa</a></dd>
                   <dd> <a href="">>> Antena 1</a></dd>
                   <dd> <a href="">>> Pro TV</a></dd>
                   <dd> <a href="">>> TLC</a></dd>
                </div>
      </li>
  </ul>

我用ilustration enter image description here

的图像 抱歉我的英语,如果你不打扰我,请写在这里。 THX提前。

1 个答案:

答案 0 :(得分:1)

我的结局代码就是这个。

    <div id="programe-tv-slide" class="flexslider">
        <strong>Programe TV</strong>
        <div class="redLine"></div>

        <?php $cat_cnl = array(); 
              $list = array(); 
              $i=1;
                 foreach ($category_chaneels as $option) { 
                    $catname = $option['category_name'];
                    $chlname = $option['channel_name'];

                    $cat_cnl[$catname][$i] = $chlname;
                    $list[$i] = $catname;
              $i++;
                 }; 
        ?>
        <?php 
            $rows = array_chunk($cat_cnl, 4, TRUE);
            foreach ($rows as $row) {  //var_dump($rows);
        ?>

          <ul class="slides">    
            <?php
                echo ('<li>');
                foreach ($row as $category => $channels) {
                    echo '<div class="programe-tv_link">'; 
                    echo '<p>' . $category . '</p>'; 
                        foreach ($channels as $channel) {
                                echo '<dd><a href="">' . $channel . '</a></dd> '; 
                        };
                    echo '</div>'; 
                    };      
                echo ('</li>'); 
            ?>
          </ul>
          <?php }; ?>
    </div>