【问题标题】:how to loop this output in codeigniter view如何在codeigniter视图中循环这个输出
【发布时间】:2017-10-24 09:50:27
【问题描述】:

我从模型返回 2 个结果查询到视图。所以,在控制器中,我只是通过 print_r($data) 函数打印这个数组。我不知道如何在我的视图中循环这个结果

这是我从模型中获得的控制器结果。那么如何循环数据呢。

Array ( [value] => Grocery 
[products] => Array ( [0] => Array ( [query1] => Array ( [0] => stdClass Object ( [parent_category] => Beverages ) [1] => stdClass Object ( [parent_category] => Household ) ) [query2] => Array ( [0] => stdClass Object ( [product_name] => Britannia Cake - Fruity Fun ) [1] => stdClass Object ( [product_name] => Tetley Green Tea - Long Leaf ) [2] => stdClass Object ( [product_name] => Tetley Green Tea - Lemon ) [3] => stdClass Object ( [product_name] => AVT Gold Cup Premium Dust Tea ) [4] => stdClass Object ( [product_name] => Brooke Bond Red Label Tea ) [5] => stdClass Object ( [product_name] => sd sdsds s ) [6] => stdClass Object ( [product_name] => sds dfcs ) [7] => stdClass Object ( [product_name] => fhgg ) [8] => stdClass Object ( [product_name] => hearts ) [9] => stdClass Object ( [product_name] => banana ) [10] => stdClass Object ( [product_name] => hearts ) ) ) ) )

型号

 $query3=$this->db->select('product_name')
                      ->from('materials')
                      ->where('category',$value)
                      ->get();
                      $data=array();
                      if($query3->num_rows() > 0)
                      {
                          //$data['category'] = $this->test($value,$location);
                            $query4=$this->db->select('parent_category')
                          ->distinct()
                          ->from('materials')
                         ->where('category',$value)
                         ->where('warehouse_id',$location)
                         ->group_by('parent_category')
                                               ->get();
                          if($query4->num_rows() > 0)
                          {

                            $data['query1']= $query4->result();

                          }
                            $data['query2']=$query3->result();
                          //print_r($data);

                          return $data=array($data);
                      }

控制器

$data['value'] = $this->input->post('newparam');
$data['products']=$this->Search_model->getItems($data['value'],$location);
print_r(  $data);

查看

<?php foreach ($query2 as $product){ ?>


        <tr>
                <td><?php echo $product->product_name?></td>

        </tr>


<?php } ?></table>

【问题讨论】:

  • 错误......?????

标签: php arrays codeigniter multidimensional-array


【解决方案1】:

假设您的 $products 变量具有以下数据结构:

[products] => Array ( 
            [0] => Array ( 
                    [query1] => Array ( 
                            [0] => stdClass Object ( [parent_category] => Beverages ) 
                            [1] => stdClass Object ( [parent_category] => Household ) ) 
                    [query2] => Array ( 
                            [0] => stdClass Object ( [product_name] => Britannia Cake - Fruity Fun ) 
                            [1] => stdClass Object ( [product_name] => Tetley Green Tea - Long Leaf ) 
                            [2] => stdClass Object ( [product_name] => Tetley Green Tea - Lemon ) 
                            [3] => stdClass Object ( [product_name] => AVT Gold Cup Premium Dust Tea ) 
                            [4] => stdClass Object ( [product_name] => Brooke Bond Red Label Tea ) 
                            [5] => stdClass Object ( [product_name] => sd sdsds s ) 
                            [6] => stdClass Object ( [product_name] => sds dfcs ) 
                            [7] => stdClass Object ( [product_name] => fhgg ) 
                            [8] => stdClass Object ( [product_name] => hearts ) 
                            [9] => stdClass Object ( [product_name] => banana ) 
                            [10] => stdClass Object ( [product_name] => hearts ) 
                    ) 
            ) 
        ) 

然后循环遍历query2数组中的数据,你可以这样做:

<?php foreach($products[0]['query2'] as $product) { ?>
    <tr>
        <td><?php echo $product->product_name;?></td>
    </tr>
<?php } ?>

【讨论】:

    【解决方案2】:

    像这样在控制器中传递数据

    $this->load->view('myview', $data);
    

    在视图中试试这个

    <?php
    foreach ($products as $prod){
        $query1 = $prod['query1'];
        $query2 = $prod['query2'];
    }
    foreach($query2 as $product){?>
        <tr>
                    <td><?php echo $product->product_name?></td>
    
            </tr>
    <?php
    }
    ?>
    

    【讨论】:

      【解决方案3】:

      您必须将数据传递给您的视图,如下所示

      /* This is in your controller */
      $data['value'] = $this->input->post('newparam');
      $data['products']=$this->Search_model->getItems($data['value'],$location);
      
      /* say your view file is myview.php then */
      $this->load->view('myview', $data);
      

      在您的视图 (myview.php) 中,您会得到两个变量

      <?php print_r($products);?>
      <?php print_r($value);?>
      

      然后像下面这样迭代

      <table>
      <?php foreach ($products[0]['query2'] as $product): ?>
              <tr>
                      <td><?php echo $product->product_name?></td>
              </tr>
      <?php endforeach;?>
      </table>
      

      【讨论】:

      • 我可以打印数据,但我只想循环浏览它
      • 请参阅添加了如何为$products[0]['query2'] 循环,因为您的模型中有return $data=array($data);,否则您可以只使用$products['query2']
      【解决方案4】:

      将数据从控制器传递到视图,然后在视图中循环

      控制器

        function index(){
          $data['value'] = $this->input->post('newparam');
          $data['products']=$this->Search_model->getItems($data['value'],$location);
          $this->load->view("pages/extras/php/content", $data);
        }
      

      查看

      <?php
      
        echo $value;
      
        foreach ($products as $key => $value) {
          //do whatever you want
        }
      ?>
      

      更多示例请参见https://www.codeigniter.com/user_guide/general/views.html

      【讨论】:

      • 如何在关联数组中循环遍历
      • 这不起作用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多