我的控制器中有以下功能:
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"}
我做错了什么?
答案 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;
}