数组只显示json文件中的一行

时间:2017-10-17 05:59:15

标签: json codeigniter-3

这是我的控制器

public function showCategoryJson(){
    $this->load->model('user/category_model');
    $data[] = $this->category_model->displayCategory();

    echo json_encode($data);
}

我的模特

function displayCategory(){
  $query = $this->db->get('categories');
  $res = $query->result_array();
  return $res;
}

和我的视图

<?php
  $url = site_url('user/category/showCategoryJson'); // path to your JSON file
  $data = file_get_contents($url); // put the contents of the file into a variable
  // echo $data;
  $results = json_decode($data); // decode the JSON feed

  foreach ($results as $key => $cat) { 
?>
<tr class="odd gradeX">
 <td><?php echo $cat[$key]->categoryname; ?></td>
 <td><?php echo $cat[$key]->username; ?></td>
 <td class="center"><a class="btn btn-success fa fa-edit"></a> <a class="btn btn-danger fa fa-trash delete" id="<?php echo $cat[$key]->categoryid; ?>"></a></td>
</tr>
<?php } ?>

我已经尝试了所有方法来获取该数组的所有值(来自JSON)。但我只得到一排。这是截图 - Screenshot of result i get

这是json的结果 enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用:

json_decode($data,true);

TRUE 时,返回的对象将被转换为关联数组。

答案 1 :(得分:0)

您可以开始的一种方式&#34;调试&#34;实际上是打印出$ results的内容。 在foreach循环之前尝试以下操作:

print_r($results);

结果会显示类似的内容:

  

数组([0] =&gt;数组([0] =&gt; stdClass对象([categoryid] =&gt; 10 [categoryname] =&gt; sdf [用户名] =&gt;冰柱)[1] =&gt; stdClass对象([categoryid] =&gt; 12 [categoryname] =&gt; ase [username] =&gt;冰柱)[2] =&gt; stdClass对象([categoryid] =&gt; 23 [categoryname] =&gt; aser [用户名] =&gt;冰柱)))sdf冰柱

这意味着json内容已被解码为嵌套数组。

您可以尝试添加&#34; true&#34; json_decode函数的参数,并将变量作为数组访问。

  

$ results = json_decode($ data,true); //解码JSON提要

完整代码:

    <?php
        $url = site_url('user/category/showCategoryJson'); // path to your JSON file
        $data = file_get_contents($url); // put the contents of the file into a variable
        $results = json_decode($data,true); // decode the JSON feed
        foreach ($results[0] as $key => $cat) { 
    ?>
    <tr class="odd gradeX">
    <td><?php echo $cat['categoryname']; ?></td>
    <td><?php echo $cat['username']; ?></td>   
    <td class="center"><a class="btn btn-success fa fa-edit"></a> <a class="btn btn-danger fa fa-trash delete" id="<?php echo $cat['categoryid']; ?>"></a></td>
    </tr>
    <?php } ?>

编辑:要将数据从控制器传递到视图,您可以将模型的结果分配给变量,然后指示控制器加载视图以及您已将数据存储到的变量

例如,在您的控制器中,您可以更改以下内容:

public function showCategoryJson(){
    $this->load->model('user/category_model');
    $data['category_data'] = $this->category_model->displayCategory();
    $url = site_url('user/category/showCategoryJson'); // path to your JSON file
    $json_data = file_get_contents($url); // put the contents of the file into a variable
    $data['results'] = json_decode($json_data,true); // decode the JSON feed
    $this->load->view('[YOUR_VIEW_NAME]',$data);
}

然后,您可以在视图中使用$ category_data和$ results。