2017-01-09 63 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; 
}