【问题标题】:convert an array to json in laravel controller在 laravel 控制器中将数组转换为 json
【发布时间】:2017-04-19 15:37:58
【问题描述】:

大家好,我又遇到问题了。这次是我的 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 循环中完成它,对吗?谁能帮帮我?

【问题讨论】:

    标签: php json laravel


    【解决方案1】:

    使用$encodedSku = json_encode($request->sku);,您将获得正确的 JSON 而不是数组。

    【讨论】:

    • 啊啊!它改变了,你是对的.. 但它没有 sku_id
    • 那么您将不得不更改数组中的键,或者从您的第一个数组创建一个新数组。 json_encode 猜不出你需要的密钥 ;)
    【解决方案2】:

    您需要在应用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}]
    

    希望这对你有用。

    【讨论】:

    • 在创建索引$incI 时应该启动关联数组(sku、数量),否则会收到大量警告
    • @JulienLachal 我在phpFiddle 测试了我的代码,然后我把它放在这里并且工作正常,没有任何错误。希望你能理解。
    • @ajussi:很高兴为您提供帮助!
    猜你喜欢
    • 2020-04-16
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多