如何将内爆结果正确保存在数组中?

How to save implode results in array correctly?

我的 data_array 是这样的:

Array ( [0] => 1 [1] => 2 [2] => 3 )

我的代码是这样的:

public function test(Request $request)
{
    $client = new GuzzleHttpClient();
    ...
    $concat_data = implode(',', $data_array);
    $result = $client->request('POST', $url, [
        'headers'=>[
            'content-type'=>'application/json',
            'Authorization'=> 'Bearer '.auth()->user()->api_token
        ], 
        'json'=>['ids'=>[$concat_data]]
    ]);
    $content = json_decode($result->getBody()->getContents());
}

如果执行代码,它不能完美运行。它只是用 id = 1

更新数据

但是,如果我像这样尝试使用静态数据:

public function test(Request $request)
{
    $client = new GuzzleHttpClient();
    ...
    $concat_data = implode(',', $data_array);
    $result = $client->request('POST', $url, [
        'headers'=>[
            'content-type'=>'application/json',
            'Authorization'=> 'Bearer '.auth()->user()->api_token
        ], 
        'json'=>['ids'=>[1,2,3]]
    ]);
    $content = json_decode($result->getBody()->getContents());
}

有效。它成功更新了 id = 1、id = 2 和 id = 3

的数据

看来我将内爆结果存储在数组中的方式仍然是错误的

我该如何解决这个问题?

备注

如果执行代码,它会更新 ids 的值

implode 将数组转换为字符串,而从您的工作静态版本来看,API 似乎接受原始数组。您向它发送字符串 "1,2,3",它无法理解。

你应该可以直接使用

'json' => ['ids' => $data_array]

并完全跳过 implode 调用。