在laravel控制器中将数组转换为json

aju*_*ssi 5 php json laravel

Hy Guys,我又遇到了问题。这次是我的laravel项目。

我有一个像这样的控制器功能:

public function postDetail(Request $request)
{
  $product_requests = $request->sku;
  $arr = [];
}
Run Code Online (Sandbox Code Playgroud)

我的$request->sku样子是这样的:

[612552892 => ['quantity' => '1'], 625512336 => ['quantity' => '10']]
Run Code Online (Sandbox Code Playgroud)

但我需要这样的json文件:

[{"sku_id": 612552892, "quantity": "1"}, {"sku_id": 625512336, "quantity": "10"}]
Run Code Online (Sandbox Code Playgroud)

所以,我也应该做钥匙吗?但是..如何?

而且我认为我必须在foreach循环中实现,对吗?有人可以帮助我吗?

Add*_*Ltd 8

您需要将数组转换为适当的格式,然后再进行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}]
Run Code Online (Sandbox Code Playgroud)

希望这对您有用。


Jul*_*hal 5

使用$encodedSku = json_encode($request->sku);,您将拥有一个正确的JSON而不是一个Array。