gpt4 book ai didi

php - 将数组数据作为对象附加到 json 文件

转载 作者:可可西里 更新时间:2023-11-01 00:09:32 25 4
gpt4 key购买 nike

我有一个简单的 json 文件,它有一个直接图像链接和每个 json 对象的文件夹名称:

[
{
"image": "http://placehold.it/350x150",
"folder": "Small"
},
{
"image": "http://placehold.it/450x250",
"folder": "Medium"
},
{
"image": "http://placehold.it/550x350",
"folder": "Medium"
}
]

我想从帖子中附加这两个值,但结果是一个未更改的 json 文件。这是带有注释的 PHP 代码:

$directLink = $_POST['txtDirectLink'];
$category = $_POST['selectCategoriesImages'];
$util->addToJsonImageList($directLink, $category);

//decodes the json image list, merges to the decoded array a new image, then encodes back to a json file
function addToJsonImageList($link, $category) {
$file = file_get_contents('./images_list.json', true);
$data = json_decode($file);
unset($file);

$newImage = array('image' => $link, 'folder' => $category);
//$newImage['image'] = $link;
//$newImage['folder'] = $category;
$result = array_merge((array)$data, (array)$newImage);

json_encode($result);
file_put_contents('./images_list.json', $result);
unset($result);
}

逻辑是将文件 json_decode 为数组应该很简单,将新数组合并到该数组上,然后对结果进行编码并放入同一个文件中。我也无法捕获任何类型的错误。

最佳答案

$data = json_decode($file, true);
//When TRUE, returned objects will be converted into associative arrays.
unset($file);

$newImage = array('image' => $link, 'folder' => $category);
//$newImage['image'] = $link;
//$newImage['folder'] = $category;
$result = array_merge($data, $newImage);
//don't need to cast

引用 PHP json_decode手册

编辑 以下代码有效(已测试)

function addToJsonImageList($link, $category) {
$file = file_get_contents('./images_list.json', true);
$data = json_decode($file,true);
unset($file);
//you need to add new data as next index of data.
$data[] = array('image' => $link, 'folder' => $category);
$result=json_encode($data);
file_put_contents('./images_list.json', $result);
unset($result);
}

Edit 2 添加了很多错误报告和调试。请让我知道以下输出。下面的代码未经测试(只是在此处输入)。如果您发现任何语法错误,请修复。这里晚了只能查明天我的时间了,不过可以回复。

<?php
//display all errors and warnings
error_reporting(-1);
addToJsonImageList('test link', 'test category');

function addToJsonImageList($link, $category) {
$file = file_get_contents('./images_list.json', true);
if ($file===false)die('unable to read file');
$data = json_decode($file,true);
if ($data ===NULL)die('Unable to decode');
unset($file);
echo "data before\n";
var_dump ($data);
//you need to add new data as next index of data.
$data[] = array('image' => $link, 'folder' => $category);
echo "data after\n";
var_dump ($data);
$result=json_encode($data);
if (file_put_contents('./images_list.json', $result) === false){
die('unable to write file');
}
unset($result);
}
?>

关于php - 将数组数据作为对象附加到 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18306953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com