PHP:如何更新json字段

时间:2016-08-21 14:50:30

标签: php json

我传递了三个参数来更新存储在json文件中的记录。 根据用户的意愿动态创建和保存记录。 以下代码成功找到json文件中的id但无法更新记录。 请帮我完成更新任务!!

//<$_GET sid desired ID, gid name of the json file to search in, and $nam array of new values>

$jsonitem = file_get_contents("folder1/".$gid.".txt");
$objitems= jsonp_decode($jsonitem,true);
foreach ($objitems as $row) {
    if ($row['id']==$sid) {
        $i=0;
        foreach ($row as $field => $value){
            $field->value = $nam[$i]; //this statement does not save the new values in the array!!
            $i++;
        }   
    }
}
$jsondata = json_encode($objitems,JSON_PRETTY_PRINT);
$jsondata = "jsonp(" . $jsondata . ")";
file_put_contents("folder1/".$gid.".txt", $jsondata);

1 个答案:

答案 0 :(得分:0)

问题是你没有在foreach循环中更新$ objitems ..你在json_encode中使用那个变量

用适当的$ objitems变量数组替换$field->value = $nam[$i];

代码将是这样的:

<?php

$jsonitem = file_get_contents("folder1/".$gid.".txt");
$objitems= jsonp_decode($jsonitem,true);
$c=0;
foreach ($objitems as $row) 
{
    if ($row['id']==$sid) {
        $i=0;
        foreach ($row as $field => $value)
        {
            $row[$field][$value] = $nam[$i];
            $i++;
        }   
        $objitems[$c] = $row;
    }
    $c++;
}
$jsondata = json_encode($objitems,JSON_PRETTY_PRINT);
$jsondata = "jsonp(" . $jsondata . ")";
file_put_contents("folder1/".$gid.".txt", $jsondata);