PHP使用表单数据修改Json值

时间:2016-04-05 11:12:19

标签: php json

我正在尝试使用从表单提交的值替换json文件中的值。 Json文件如下:

{
    "meta_titles": {
        "Just another site": "",
        "Test test": "",
        "This is a test post": "",
        "Hello world!": ""
    },
    "tag_titles": {
        "Title Test": "",
        "Recent Posts": "",
        "Recent Comments": "",
    }
}

和PHP数组:

Array
(
    [meta_titles-0] => Juste un autre site Wordpress
    [meta_titles-1] => 
    [meta_titles-2] => Ceci est un test post
    [meta_titles-3] => Salut le monde
    [tag_titles-0] => 
    [tag_titles-1] => 
    [tag_titles-2] => 
)

应该返回:

{
    "meta_titles": {
        "Just another site": "Juste un autre site Wordpress",
        "Test test": "",
        "This is a test post": "Ceci est un test post",
        "Hello world!": "Salut le monde"
    },
    "tag_titles": {
        "Title Test": "",
        "Recent Posts": "",
        "Recent Comments": "",
    }
}

到目前为止我所拥有的:

         $filecontent = file_get_contents($website_directory.'/'.$file_to_read);
         $oJson = json_decode($filecontent, true);

         foreach ($_POST as $key => $val) {
            foreach($oJson->fields as $i => $oVal) {
                    $oJson->fields[$i]->value = $val;
            }
         }
         $json = json_encode($oJson);
         var_dump($json);

尝试了很多事情,但没有找到办法。 编辑:我从var_dump得到完全相同的json文件内容。

1 个答案:

答案 0 :(得分:2)

  • 如果json_decode设置为true,则来自$oJson的第二个参数意味着array将为$oJson。因此,您将像array一样访问$_POST
  • 你必须从php数组中获取数字并在json中搜索该位置的哪个键并更新数组中的该键。在json中你有多级数组,在 $filecontent = file_get_contents($website_directory.'/'.$file_to_read); $oJson = json_decode($filecontent, true); foreach ($_POST as $key => $val) { list($json_key, $json_no) = explode("-", $key); $json_keys = array_keys($oJson[$json_key]); $oJson[$json_key][$json_keys[$json_no]] = $val; } $json = json_encode($oJson); var_dump($json); 你只有单级数组。

您必须更改为:

BEGIN BATCH;
INSERT INTO keyspace.table (id, field1) VALUES ('1','value1');
INSERT INTO keyspace.table (id, field1) VALUES ('2','value2');
APPLY BATCH;