无法在laravel方法中将JSON对象转换为关联数组

时间:2017-01-09 15:14:00

标签: php laravel laravel-5

我的控制器中有以下功能:

public function index() {
        $tags = DB::table('Tags')->get();
        $tagsArray = array();
        foreach($tags as $tag) {
            $tagsArray[$tag->id] = $tag->tag; 
        }

        $tagsArray = json_decode(json_encode($tagsArray) , true);
        return $tagsArray;
}

现在我需要将$ tagsArray作为数组传递给我的视图,但即使我遵循以下步骤:

    $tagsArray = json_decode(json_encode($tagsArray) , TRUE);

我没有获得关联数组,而是获得的数据如下:

{"1":"javascript","2":"browser-bugs"}

我做错了什么?

3 个答案:

答案 0 :(得分:3)

直接从控制器返回数组将始终生成json对象。 Laravel自动将php数组转换为json以输出:https://laravel.com/docs/5.3/responses#creating-responses

您必须将此值添加到视图中,最好使用the view helper。像这样:

return view('home')->with(['tags' => $tagsArray]);

答案 1 :(得分:2)

您可以将所有代码更改为:

public function index() {
    $tags = DB::table('Tags')->pluck('tag', 'id')->toArray();
    return view('some.view, compact('tags'));
}

这将返回一个[1 => 'Javascript', 2 => 'browser-bugs']结构的数组。

答案 2 :(得分:0)

public function index() {
    $tags = DB::table('Tags')->get();
    $tagsArray = array();
    foreach($tags as $tag) {
        $tagsArray[$tag->id] = $tag->tag; 
    }
    $tagsArray = json_decode(json_encode($tagsArray) , true);
    return $tagsArray;
}
相关问题