我有一个带有以下语法的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)
当然它不会成功,任何想法都可以吗?
有一些问题.
首先,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)