如何在没有重复值的二维数组中为另一个循环内部创建一个循环

时间:2017-05-09 14:36:37

标签: php mysql codeigniter for-loop view

我在我的控制器中有一个查询,其中我根据id搜索数据,它返回2个结果,然后我想根据先前的结果搜索一些数据并在视图中显示。它是这样的:

  • 第一次查询:

    $query_1 = $obj1->Searcher_Test($type);
    
    function Searcher_Test($type) 
        {
          $this->db->join('n_type', 'n_type.id_test = test.id_test');
          $this->db->where('test.id_type', $type);
          return $this->db->get('test');
         }
    
  • 第二个查询:

    $query_2 = $obj2->Searcher_charact($id_test);<br> 
      function Searcher_charact($id_test) <br> 
            {<br> 
              $this->db->join('charact', 'charact.id_test = test.id_test');<br> 
              $this->db->where('test.id_test', $id_test);<br> 
              return $this->db->get('test');<br> 
             }<br> 
    
  • 第一个查询给我2个结果

         id_test | test  |id_type
         ------- |------ |--------
           1     | one   |   1
           2     | two   |   1
    
  • 第二个查询给我3个结果

        id_charact | charact | id_test
            1      |  moduls |    1
            2      |  direct |    1
            3      |  integer|    2
    

我为循环制作了这个

$contador = 0;
$list_test = array(array());
$contador_charact = 0;
$list_charact = array(array());

for ($i = 0; $i < $query_1->num_rows; $i++) { 
     $id_test = $query_1->row($i)->id_test;   
     $query_2 = $obj2->Searcher_charact($id_test); 

     for ($j = 0; $j < $query_2->num_rows; $j++) {
        $list_charact[$contador_charact]['charact'] = $query_2->row($j)->charact;
        $contador_charact ++;
     }// for j

     $list_test[$contador]['test'] = $query_1->row($j)->test;

     $contador++;

}// for i

在视图中我做了这个,但它显示了我的所有记录,包括id_test = 1和id_test = 2

for ($i = 0; $i < $contador; $i++) {
<div class="layout-item-0">
<?php echo $list_test[$i]['test']; ?>
   for ($j = 0; $j < $contador_charact; $j++) {
?>
   <li>
     <?php echo $list_charact[$j]['charact']?>
   </li>
<?php
     } //for j
</div>
} //for i

它显示的内容如下:

one
   moduls
   directs
   integer

two
   moduls
   directs
   integer

我想要那个节目

one
   moduls
   directs
   integer

two
   integer

我不知道我的查询是错误的,我的循环还是我的观点。请帮助,谢谢你。

1 个答案:

答案 0 :(得分:0)

感谢大家。我找到了答案,我在我看来这样做:

for ($i = 0; $i < $contador; $i++) {
        <div class="layout-item-0">
          <?php echo $list_test[$i]['test']; ?>
             for ($j = 0; $j < $contador_charact; $j++) {
                 if ($id_test == $list_charact[$j]['id_test']) { // <--- this is what I add
               ?>
        <li>
        <?php echo $list_charact[$j]['charact']?>
        </li>
        <?php
                  }//del if                 
              } //for j
        </div>
        } //for i