php - 使用 PHP 表单将数据附加到 JSON 文件的顶部
问题描述
我想将 JSON 文件中的数据中的 php 附加到顶部。
我使用了一些 PHP 函数,例如 -
array_unshift($array_data, $extra);
$array_data = array_reverse($array_data);
例子 -
<?php
$message = '';
$error = '';
if(isset($_POST["submit"]))
{
if(empty($_POST["name"]))
{
$error = "<label class='text-danger'>Enter Name</label>";
}
else if(empty($_POST["author"]))
{
$error = "<label class='text-danger'>Enter Author</label>";
}
else if(empty($_POST["category"]))
{
$error = "<label class='text-danger'>Enter Thumbnail</label>";
}
else if(empty($_POST["url"]))
{
$error = "<label class='text-danger'>Enter URL</label>";
}
else
{
if(file_exists('wallpaper.json'))
{
$current_data = file_get_contents('wallpaper.json');
$array_data = json_decode($current_data, true);
$extra = array(
'name' => $_POST['name'],
'author' => $_POST["author"],
'category' => $_POST["category"],
'url' => $_POST["url"]
);
$array_data[] = $extra;
//array_unshift($array_data, $extra); // used this as well
$array_data = array_reverse($array_data);
$final_data = json_encode($array_data);
if(file_put_contents('wallpaper.json', $final_data))
{
$message = "<label class='text-success'>File Appended Success fully</p>";
}
}
else
{
$error = 'JSON File not exits';
}
}
}
?>
这两个 PHP 函数都可以正常工作,直到您添加 2 次数据,但是一旦您添加了第 3 个或更多数据,它看起来像这样 -
[
{
"name": "3",
"author": "3",
"category": "3",
"url": "3"
},
{
"name": "1",
"author": "1",
"category": "1",
"url": "1"
},
{
"name": "2",
"author": "2",
"category": "2",
"url": "2"
}
]
但它应该看起来像这样 -
[
{
"name": "3",
"author": "3",
"category": "3",
"url": "3"
},
{
"name": "2",
"author": "2",
"category": "2",
"url": "2"
},
{
"name": "1",
"author": "1",
"category": "1",
"url": "1"
}
]
解决方案
一开始你有 [1] 然后你插入 [2] 和 $array_data[] = $extra; 转到 [1][2],然后你反转数组 [2][1]。此时,当您插入一个新值时,您有 [2][1][3] 并且在反转 [3][1][2] 之后,解决方案将在插入额外之前反转:
测试.php:
<?php
if(file_exists('wallpaper.json'))
{
$current_data = file_get_contents('wallpaper.json');
$array_data = json_decode($current_data, true);
$extra = array(
'name' => $_REQUEST['name'],
'author' => $_REQUEST["author"],
'category'=> $_REQUEST["category"],
'url' => $_REQUEST["url"]
);
echo $extra['name'];
$array_data = array_reverse($array_data);
$array_data[] = $extra;
$array_data = array_reverse($array_data);
$final_data = json_encode($array_data);
if(file_put_contents('wallpaper.json', $final_data))
{
$message = "<label class='text-success'>File Appended Success fully</p>";
}
}
?>
运行我曾经传递参数:
http://localhost/test.php?name=4&author=4&category=4&url=4
推荐阅读
- apache2.4 - mod_jk 无法连接 tomcat9
- python - 在 Python 中为什么这不起作用?.... with open('filename.txt','a+').write('一些示例文件内容\n')
- java - 使用 GridBagLayout 保持组件的比例
- css - 从 JavaFX 中的 CSS 读取(自定义)颜色属性
- javascript - Angular 导航内容而不更改组件
- django - Zoom 会议的 Django 身份验证
- python - TyperError : 不支持的操作数类型 -: 'float' 和 'builtin_function_or_method'
- reactjs - ReactjS - const 在获取之前加载所有状态
- css - 悬停时的菜单下划线,文本长度而不是元素长度
- python - 如何为空集提供类型注释?