在laravelphp中的put存储方法中传递json数组形式

passing json array form in the put storage method in laravel php

我正在尝试传递 $data 数组以将其保存在 laravel 存储文件中 我的代码是:

$data = '[
            {
                "label": " Total Accidents",
                "color": "#5ab1ef",
                "data": 
                    [
                        ["Jan",0],
                        ["Feb",0],
                        ["Mar",0],
                        ["Apr",0],
                        ["May",0],
                        ["Jun",0],
                        ["Jul",0],
                        ["Aug",0],
                        ["Sep",0]
                    ]
            },
            {
                "label": " Active Experts",
                "color": "#f5994e",
                "data": 
                    [
                        ["Jan",0],
                        ["Feb",0],
                        ["Mar",0],
                        ["Apr",0],
                        ["May",0],
                        ["Jun",0],
                        ["Jul",0],
                        ["Aug",0],
                        ["Sep",0]
                    ]
            },
            {
                "label": " Pending Payments",
                "color": "#d87a80",
                "data": 
                    [
                        ["Jan",0],
                        ["Feb",0],
                        ["Mar",0],
                        ["Apr",0],
                        ["May",0],
                        ["Jun",0],
                        ["Jul",0],
                        ["Aug",0],
                        ["Sep",0]
                    ]
            }

      ]';   
 $test = json_decode($data, true);
 $test[0]['data'][1] =  ["Jan", 153];
 Storage::disk('chartData')
    ->put('chart/test'.$_SESSION['companyId'].'.json', $test);
 return 'done';

我想根据数据库值更改每年的值,问题是当我尝试放置方法时出现以下错误:

Array to string conversion

如果我在不执行 json_decode 的情况下传递 $data 数组,它工作正常,但在这种情况下,我无法更改数组中的数据,所以我必须对其进行解码。

在这种情况下,您应该使用 json_encode 函数将 JSON 数据转换为字符串。

$test[0]['data'][1] =  ["Jan", 153];

$test = json_encode($test);// convert to string

Storage::disk('chartData')
->put('chart/test'.$_SESSION['companyId'].'.json', $test);