2017-01-09 66 views
1

我在我的控制器的以下功能:无法JSON对象转换为关联数组中laravel方法

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

我在做什么错?

+1

'json_decode()的输出'是JSON? –

+0

你的控制器返回'json_decode'的结果 - 你认为是什么“捕捉”了'return'语句?发布的答案解释了会发生什么,但是你没有解释你期望得到的结果。你没有做错任何事情,因为一切都按想象的那样工作,但这不是你所期望的。你期望什么?那就是问题所在。如果你想通过这个视图,那么你需要'返回视图('your_view',['tags => $ tagsArray]);' – Mjh

+0

@Mjh对于那个队友感到抱歉,我会牢记这一点。 –

回答

2

你可以改变所有的代码这样:

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

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

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