首页 > 解决方案 > 使用 PHP 表单将数据附加到 JSON 文件的顶部

问题描述

我想将 JSON 文件中的数据中的 php 附加到顶部。

我使用了一些 PHP 函数,例如 -

  1. array_unshift($array_data, $extra);

  2. $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"
  }
]

标签: php

解决方案


一开始你有 [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

推荐阅读