2016-12-05 36 views
1

海蘭好,我再次有一個問題。這次是我的laravel項目。轉換數組JSON在laravel控制器

我有一個這樣的控制器功能:

public function postDetail(Request $request) 
{ 
    $product_requests = $request->sku; 
    $arr = []; 
} 

而且我$request->sku是這樣的:

[612552892 => ['quantity' => '1'], 625512336 => ['quantity' => '10']] 

,但我需要的JSON文件是這樣的:

[{"sku_id": 612552892, "quantity": "1"}, {"sku_id": 625512336, "quantity": "10"}] 

所以,我是否也應該做鑰匙?但是..怎麼樣?

,我想我必須讓它在foreach循環嗎?任何人都可以幫助我?

回答

3

你需要數組轉換成適當的形式後適用json_encode()象下面這樣:

$arrSku = array('612552892' => array('quantity' => 1), '625512336' => array('quantity' => 10)); 

$arrNewSku = array(); 
$incI = 0; 
foreach($arrSku AS $arrKey => $arrData){ 
    $arrNewSku[$incI]['sku_id'] = $arrKey; 
    $arrNewSku[$incI]['quantity'] = $arrData['quantity']; 
    $incI++; 
} 

//Convert array to json form... 
$encodedSku = json_encode($arrNewSku); 

print('<pre>'); 
print_r($encodedSku); 
print('</pre>'); 

//Output: 
[{"sku_id":612552892,"quantity":1},{"sku_id":625512336,"quantity":10}] 

希望這會爲你工作。

+0

你應該啓動關聯數組(SKU,數量)phpFiddle]'json_encode'不能猜你需要的鑰匙(http://phpfiddle.org/)之前,我把它放在這裏,工作正常,沒有任何單一的錯誤。希望你能理解。 –

+0

@JulienLachal我測試我的代碼在時) –

+0

yeaah它會工作:d,感謝球員 – ajussi

3

使用$encodedSku = json_encode($request->sku);,你就會有一個正確的JSON而不是數組。

+0

AAAH!它改變了,你是對的..但它沒有'sku_id'鍵 – ajussi

+0

我應該在創建數組時手動創建鍵嗎? – ajussi

+1

然後您必須更改數組中的鍵,或者從第一個數組創建一個新數組。創建索引'$ incI'否則你會得到噸警告 –