如何在codeigniter视图中循环此输出

I am returning 2 result query from model to view. so, in controller i am just printing the this array by print_r($data) function. i dont know how to loop this result in my view

this is the result i am getting in the controller from the model. so how can i loop through the 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 ) ) ) ) )

Model

 $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);
                      }

Controller

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

View

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


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

        </tr>


<?php } ?></table>

Assuming your $products variable has the following data structure :

[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 ) 
                    ) 
            ) 
        ) 

Then to loop through the data in the query2 array, you could do :

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

Pass the data from controller to view then loop it inside the view

CONTROLLER

  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);
  }

VIEW

<?php

  echo $value;

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

See https://www.codeigniter.com/user_guide/general/views.html for more examples

You have to pass data to your view, like below

/* 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);

in you view (myview.php), you get two variables

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

and iterate like below

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

pass data in controller like this

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

try this in view

<?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
}
?>