如何修复为foreach()提供的无效参数?

how can I fix my error of indexes on my json through foreach? by the way this is my json 1.

[  
   {  
      "id":"1",
      "sección":"Inventario",
      "data":[  
         {  
            "id":"11",
            "icon":"http:\/\/localhost\/storeLTE\/assets\/img\/sidebar\/items.png",
            "value":"Productos",
            "seccion_id":"1",
            "url":"http:\/\/localhost\/storeLTE\/inventario\/product"
         },
         {  
            "id":"14",
            "icon":"http:\/\/localhost\/storeLTE\/assets\/img\/sidebar\/employees.png",
            "value":"Provedores",
            "seccion_id":"1",
            "url":"http:\/\/localhost\/storeLTE\/provedor\/provedor"
         }
      ]
   },
   {  
      "id":"2",
      "sección":"Compras",
      "data":[  
         {  
            "id":"22",
            "icon":"http:\/\/localhost\/storeLTE\/assets\/img\/sidebar\/suppliers.png",
            "value":"Compras",
            "seccion_id":"2",
            "url":"http:\/\/localhost\/storeLTE\/compras\/compras"
         }
      ]
   }
]

I would like to know how can I Access my indexes to foreach and do it properly. because im getting invalid argument supplied for foreach()

controller

public function getModules($id_module) {
    if ($this->session->userdata('log')) {
        $data = $this->session->userdata('log');
        $menu = array();
        $seccions = $this->module->get_rows();
        foreach ($seccions as $index => $seccion){
            $modules = $this->module->query("SELECT CONCAT('".$seccion['id']."',storelte_modulo.id) AS id,CONCAT('".base_url('assets/img/sidebar')."','/',storelte_modulo.icon) as icon, storelte_modulo.modulo AS value,storelte_modulo.seccion_id,CONCAT('".base_url()."',storelte_modulo.url) AS  url FROM storelte_modulo INNER JOIN storelte_modulo_perfil ON  storelte_modulo_perfil.modulo_id = storelte_modulo.id WHERE seccion_id = $seccion[id] AND storelte_modulo_perfil.perfiles_id = $data[id] AND storelte_modulo_perfil.STATUS = 1");
            $seccions[$index]['data'] = $modules;
            if (!count($seccions[$index]['data'])) {
                unset($seccions[$index]);
            }
        }
        foreach ($seccions as $item) {
            array_push($menu,$item);
        }

        $this->json($menu);
    }

model

 public function get_rows() {
     $this->db->select('id,seccion');
     $this->db->from('storelte_seccion');

     return $this
         ->db
         ->get()
         ->result_array()
     ;
 }

 public function query($query){
     return $this
         ->db
         ->query($query)
         ->result_array()
     ;
 }

HTML

<div class="row">
<h3 class="text-center">Welcome to storeLTE, click a module below to get started!</h3>
<div class="home_module_list">
    <div class="module_item">
        <?php foreach ($seccions as $session) { ?>
          <div class="module_item" title="<?= $session['value'];?>">
            <a href="<?= $session['url']; ?>"><img src="<?= $session['icon']; ?>"/></a>
            <a href="<?= $session['url']; ?>"><?= $session['value']?></a>
        </div>
        <?php } ?>
    </div>
</div>
</div>

You have the problem because $session in foreach ($seccions as $session) it is list, but not assoc array. You must use one more foreach for each element inside data. Here example:

$json = '[  
   {  
      "id":"1",
      "sección":"Inventario",
      "data":[  
         {  
            "id":"11",
            "icon":"http:\/\/localhost\/storeLTE\/assets\/img\/sidebar\/items.png",
            "value":"Productos",
            "seccion_id":"1",
            "url":"http:\/\/localhost\/storeLTE\/inventario\/product"
         },
         {  
            "id":"14",
            "icon":"http:\/\/localhost\/storeLTE\/assets\/img\/sidebar\/employees.png",
            "value":"Provedores",
            "seccion_id":"1",
            "url":"http:\/\/localhost\/storeLTE\/provedor\/provedor"
         }
      ]
   },
   {  
      "id":"2",
      "sección":"Compras",
      "data":[  
         {  
            "id":"22",
            "icon":"http:\/\/localhost\/storeLTE\/assets\/img\/sidebar\/suppliers.png",
            "value":"Compras",
            "seccion_id":"2",
            "url":"http:\/\/localhost\/storeLTE\/compras\/compras"
         }
      ]
   }
]';

$array = json_decode($json, true);

foreach ($seccions as $section) {
    echo 'id = ' . $section['id'] . '<br/>';
    echo 'sección = ' . $section['sección'] . '<br/>';
    echo 'Data of sección:<br/>';
    // each array inside data - $seccions[0]['data'][0], $seccions[0]['data'][1] etc.
    foreach ($section['data'] as $dataItem) {
        echo 'data id = ' . $dataItem['id'] . '<br/>';
        echo 'data icon = ' . $dataItem['icon'] . '<br/>';
        echo 'data value = ' . $dataItem['value'] . '<br/>';
        echo 'data seccion_id = ' . $dataItem['seccion_id'] . '<br/>';
        echo 'data url = ' . $dataItem['url'] . '<br/>';
    }
}

Here example with your html:

<div class="module_item">
    <?php foreach ($array as $session) : ?>
        <?php foreach ($session['data'] as $itemData) : ?>
            <div class="module_item" title="<?= $itemData['value'] ?>">
                <a href="<?= $itemData['url'] ?>"><img src="<?= $itemData['icon'] ?>"/></a>
                <a href="<?= $itemData['url'] ?>"><?= $itemData['value']?></a>
            </div>
        <?php endforeach ?>
    <?php endforeach ?>
</div>

Hope this helps you.