从API解析多维数组

时间:2016-11-22 13:47:17

标签: php arrays codeigniter

我正在尝试将数据从API解析到我网站上的视图。 当我将脚本直接放到索引上时,只是为了测试,它返回:

 array(2) 
 { 
    ["status"]=> int(1) 
    ["categories"]=> array(2) 
        { 
            [0]=> array(2) 
                { 
                    ["id"]=> string(1) "5" 
                    ["name"]=> string(19) "Pensionar / Veteran" 
                } 
                [1]=> array(2) 
                { 
                    ["id"]=> string(1) "6" 
                    ["name"]=> string(14) "Alta categorie" 
                } 
        } 
} 

这就是我的模型的样子:

public function getPassengerCategories()
{
    try {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "http://api_link");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $parsed_json = curl_exec($ch);
        $parsed_json = json_decode($parsed_json, true);

        $data = $parsed_json;

        return $data;
    }
    catch (Exception $e) {
        return $e->getMessage();
    }
}

我的控制器看起来像这样:

function getPassengerCategories()
{
    $this->load->model('Curse_Interne_Model');
    $data = $this->Curse_Interne_Model->getPassengerCategories();

    foreach($data as $categories)
    {
        foreach ($categories as $category)
        {
            $html = $this->load->view("front/search_box.php", array(
                'categories' => $category
            ), true);
            echo json_encode(array("status" => 1, "html" => $html));
        }

    }
}

我首先尝试检查此数组是否已解析为视图,这就是我的视图的样子:

<?php
    $data = array('categories' => $category);
    print('<pre>' . print_r($data) . '</pre>');

?>

问题是它返回视图的所有内容都是以下结果:

Array ( [categories] => )

1

知道如何解决这个问题吗?谢谢 !

1 个答案:

答案 0 :(得分:1)

$data上的迭代逻辑错误。这是您的数据:

$data = [
  "status"     => 1,
  "categories" => [
       ["id" => 5, "name" => "Pensionar / Veteran"],
       ["id" => 6, "name" => "Alta categorie"],
  ]
]

现在,如果您想迭代类别并将每个类别传递给视图:

foreach ($data['categories'] as $category) {
    $html = $this->load->view('front/search_box', ['categories' => $category], true);

    echo json_encode(["status" => 1, "html" => $html]);
}

整体逻辑似乎对我不利;你不会在foreach循环中回应JSON响应。无论如何,无论你的逻辑是什么,你都需要更加关注你的数据结构格式。

另外,请阅读这些资源以改进您的代码: