如何使用PHP在JSON中添加数据

use*_*842 4 php json for-loop

我有一个带有以下语法的json文件:

[
  {
    "fields": {
      "service_number": "service_number",
      "physical_address": "physical_address",
      "account_id": "account_id",
      "contact_id": "contact_id"
    },
    "someId": "asd23f",
    "status": "Active",
    "perCode": "1",
    "idCode": "0987",
    "nextCode": "09"
  },
  {
    "fields": {
      "service_number": "service_number",
      "physical_address": "physical_address",
      "account_id": "account_id",
      "contact_id": "contact_id"
    },
    "someId": "789096",
    "status": "Active",
    "perCode": "1",
    "idCode": "076543",
    "nextCode": "09"
  }
]
Run Code Online (Sandbox Code Playgroud)

我想使用for循环,以便在nextCode之前或之后添加类似userID的东西.这有什么解决方案吗?到目前为止,我试过这个:

$data = json_decode($file, true);
foreach ($data as $key => $val)
{
    foreach ($val as $key=>$c)
    {
        if (is_array($c))
            continue;
        $data .= $data . "user_id:$userId";
    }
}
Run Code Online (Sandbox Code Playgroud)

当然它不会成功,任何想法都可以吗?

Don*_*nic 5

有一些问题.

  • 首先,foreach循环使用它正在迭代的数组的副本,因此修改其中一个项目将不会更改原始数组.

  • 然后,你的内部foreach循环将覆盖$key外部循环.这导致问题,但没关系,因为你实际上并不需要内循环.

  • 最后,在你解码了JSON字符串之后,$data它将成为一个数组,所以附加它.=不会起作用,即使它确实如此,你只是在它的末尾而不是在特定的点上粘贴一些东西.你的循环在哪里.

只需参考您需要的特定密钥并在那里设置值.

$data = json_decode($file, true);
foreach ($data as $key => $val)
{
    $data[$key]['user_id'] = $userId;
}
$data = json_encode($data);
Run Code Online (Sandbox Code Playgroud)