【问题标题】:How to save implode results in array correctly?如何正确地将内爆结果保存在数组中?
【发布时间】:2026-01-12 03:05:01
【问题描述】:

我的 data_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 的值

【问题讨论】:

    标签: php arrays laravel-5.3 implode guzzle6


    【解决方案1】:

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

    你应该可以使用

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

    并完全跳过implode 调用。

    【讨论】:

      最近更新 更多