如何在特定位置将一些数据预先添加到json解码数组中

时间:2017-10-08 16:07:48

标签: php json

我的任务是将数据添加到数组中,这是从解码JSON文件中获得的。我非常喜欢php,尤其是php + JSON数据。我能够将数据添加到JSON文件中,但是在错误的位置,并且通过预先添加这些数据,它会修改为{"0":{my prependet data}...}。我不想拥有" 0",我想拥有如下代码中的结构。

php代码:

$current_data = file_get_contents('reports.json');

$array_data   = json_decode($current_data, true);

$extra_data = array(
    'name' => $_POST["name"],
    'date' => $_POST["date"],
    'message' => $_POST["message"]
);
array_unshift($array_data[0], $extra_data);
$final_data = json_encode($array_data);
file_put_contents( 'reports.json', $final_data );

JSON文件具有以下结构:

{
  "reports": [
    {
      "name": "Alex",
      "date": "30.09.2017",
      "message": "some words 1"
    },
    {
      "name": "Polly",
      "date": "27.09.2017",
      "message": "some words 2"
    }
  ]
}

我现在在JSON中得到的是:

{"0":{"name":"Name from $extra_data",
      "date": "Date from $extra_data",
      "message":"some words from $extra_data"}, 
 "reports": [
        {
          "name": "Alex",
          "date": "30.09.2017",
          "message": "some words 1"
        },
        {
          "name": "Polly",
          "date": "27.09.2017",
          "message": "some words 2"
        }
      ]
    } 

我想得到的是:

{
  "reports": [
    {
      "name": "Name from $extra_data",
      "date": "Date from $extra_data",
      "message": "some words from $extra_data"
    },
    {
      "name": "Alex",
      "date": "30.09.2017",
      "message": "some words 1"
    },
    {
      "name": "Polly",
      "date": "27.09.2017",
      "message": "some words 2"
    }
  ]
}

2 个答案:

答案 0 :(得分:1)

您实际上是在0处创建索引并将其粘贴在那里。由于您的数组不使用索引,因为它是一个关联数组,您需要做的就是更改以下行

epoll

到此

array_unshift($array_data[0], $extra_data);

这样可以确保它将数据粘贴在数组的“报告”部分。

答案 1 :(得分:0)

您不会移动到json对象,而不是报告数组。 像这样:

$ current_data = file_get_contents(' reports.json');

$ array_data = json_decode($ current_data,true);

$current_data = file_get_contents('reports.json');

$array_data   = json_decode($current_data, true);

$extra_data = array(
    'name' => $_POST["name"],
    'date' => $_POST["date"],
    'message' => $_POST["message"]
);
$reports = $array_data['reports'];
array_unshift($reports, $extra_data);
$final_data = json_encode($reports);
var_dump($final_data);