【问题标题】:How to dynamically insert JSON data into a PHP array for foreach [duplicate]如何为foreach动态地将JSON数据插入PHP数组[重复]
【发布时间】:2020-05-12 21:24:49
【问题描述】:

我有以下 PHP 代码,当我点击表单中的提交按钮时会执行该代码:

// Save data
if(isset($_POST['save'])){

        $newDataArr = array();

        foreach ($data_array[0] as $k=>$v){

            $newDataArr[] = array($k => $_POST[$k]);

        }// ./ foreach

        echo json_encode($newDataArr);
}

我得到的回声如下:

[{"ID->id":"esKZSCDfIC"},{"DT->createdAt":"2020-01-26T13:02:42"},{"DT->updatedAt":"2020-01-26T13:02:42"},{"ST->aString":"hey1"},{"NU->number":123},{"GPS->coords":["2.2222","44.4444"]},{"BL->aBool":false},{"AR->theArray":["xx","ww"]},{"FL->theFile":"https:\/\/xscoder.com\/xserver\/uploads\/6dydDtoTt5JjZzFc5L5V_image.jpg"},{"PO->userPointer":"vbN3b0C7bC"}]

然后我必须将该数组添加到我的 JSON 文件中,如下所示:

$data = json_encode(array_values($newDataArr), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
file_put_contents('Test.json', $data);

当然我的$newDataArr的语法不对,每个JSON对象都不能在{ }里面,所以这样:

{"ID->id":"esKZSCDfIC"},

必须变成:

"ID->id":"esKZSCDfIC",

有没有办法动态创建有效的 JSON 数组并将其推送到我的 Test.json 文件?

我在 StackOverflow 上浏览过很多帖子,但我得到的结果总是一样的。我必须使用上面的 PHP 代码从我的 HTML 输入中获取键和值。

【问题讨论】:

  • 读取 json 文件,在其上运行 json_decode() 以使其成为有效的 PHP 数据结构,向其中添加新信息,然后将其转换回 jsonString json_encode() 新结构然后写入它到一个文件

标签: php json database


【解决方案1】:

不要在每次迭代时创建和推送一个新数组,而是这样设置值:

$newDataArr[$k] = $_POST[$k];

希望这会有所帮助。

【讨论】:

  • 这与 OP 发布的内容有何不同?
  • @Andreas 答案中描述了差异。您无需为每个属性推送一个新数组,而是将该属性作为索引添加到 newDataArr 数组中。
猜你喜欢
  • 2019-02-12
  • 2013-07-09
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 2017-07-08
  • 2013-05-05
相关资源
最近更新 更多