web-dev-qa-db-ja.com

laravelコントローラで配列をjsonに変換します

こんにちは、また問題があります。今回はmy laravel project。

次のようなコントローラー機能があります。

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ループでそれを作る必要があると思いますか?誰も私を助けることができますか?

5
ajussi

以下のjson_encode() likeを適用した後、配列を適切な形式に変換する必要があります。

$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}]

これがあなたのために働くことを願っています。

$encodedSku = json_encode($request->sku);を使用すると、配列の代わりに適切なJSONが得られます。

6
Julien Lachal