【问题标题】:How to reverse this json如何反转这个json
【发布时间】:2019-12-24 18:03:38
【问题描述】:

我有一个关于数组反转的问题。我试过 array_reverse(...,true) 但它不起作用。可能是我申请的地方不对。所以我已经在下面附上了我的 php 代码和 json 结果。请帮我扭转这个json。

$conn = mysqli_connect(HOST,USER,PASS,DB);
$sql = mysqli_query($conn,"SELECT story_id,story_name,story_author,story_cover_link FROM short_story 
 WHERE parent=0");

// parent categories node
$categories = array("Categories" => array());

while ($row = mysqli_fetch_array($sql,MYSQLI_ASSOC))
    {
     $story_id = $row['story_id'];

     $ssql = mysqli_query($conn,"SELECT story_id,chapter_name,chapter_link FROM short_story WHERE  parent='$story_id'");

     // single category node
     $category = array(); // temp array
     $category["story_id"] = $row["story_id"];
     $category["story_name"] = $row["story_name"];
     $category["story_author"] = $row["story_author"];
     $category["story_cover_link"] = $row["story_cover_link"];
     $category["chapters"] = array(); // subcategories again an array

     while ($srow = mysqli_fetch_array($ssql,MYSQLI_ASSOC))
         {
         $subcat = array(); // temp array
         $subcat["story_id"] = $srow['story_id'];
         $subcat["chapter_name"] = $srow['chapter_name'];
         $subcat["chapter_link"] = $srow['chapter_link'];
         // pushing sub category into subcategories node

         array_push($category["chapters"], $subcat);
     }

     // pushing sinlge category into parent
     array_push($categories["Categories"], $category);
 }

 echo json_encode($categories);

这是生成的 json。我想要的是,我想扭转这个。回归后

{
"Categories": [{
    "story_id": "1",
    "story_name": "Nethuu",
    "story_author": "Gimhani Thennakon",
    "story_cover_link": "http:\/\/appzoneproduction.xyz\/sinhala_novels\/Cover\/sonduru_nawodaya.jpg",
    "chapters": [{
        "story_id": "7",
        "chapter_name": "Nethu - 1",
        "chapter_link": "http:\/\/appzoneproduction.xyz\/sinhala_novels\/Novel\/gal%20kanda%20walawwa.pdf"
    }, {
        "story_id": "8",
        "chapter_name": "Nethu - 2",
        "chapter_link": "http:\/\/appzoneproduction.xyz\/sinhala_novels\/Novel\/gal%20kanda%20walawwa.pdf"
    }, {
        "story_id": "9",
        "chapter_name": "Nethu - 3",
        "chapter_link": "http:\/\/appzoneproduction.xyz\/sinhala_novels\/Novel\/gal%20kanda%20walawwa.pdf"
    }]
}, {
    "story_id": "2",
    "story_name": "Sewwandi",
    "story_author": "Gayana S Lakmali",
    "story_cover_link": "http:\/\/appzoneproduction.xyz\/sinhala_novels\/Cover\/gal%20kanda%20walawwa.jpg",
    "chapters": [{
        "story_id": "10",
        "chapter_name": "Sewwandi - 1",
        "chapter_link": "http:\/\/appzoneproduction.xyz\/sinhala_novels\/Novel\/gal%20kanda%20walawwa.pdf"
    }, {
        "story_id": "11",
        "chapter_name": "Sewwandi - 2",
        "chapter_link": "http:\/\/appzoneproduction.xyz\/sinhala_novels\/Novel\/gal%20kanda%20walawwa.pdf"
    }]
}]
 }

谢谢

【问题讨论】:

  • 反向是什么意思?你想"story_id": "2" json 的第一个索引吗?
  • 是的。我希望 id 索引为 2,1

标签: php sql json


【解决方案1】:

@Ice76 是正确的,但是有一个替代解决方案可以消除更改查询的需要并略微提高性能。如果您尝试以相反的顺序添加Categories,只需使用array_unshift() 而不是array_push():

// pushing sinlge category into parent
array_unshift($categories["Categories"], $category);

如果你想对 chapters 做同样的事情:

// pushing sub category into subcategories node
array_unshift($category["chapters"], $subcat);

【讨论】:

    【解决方案2】:

    如果您正在寻找的只是让 ID 降序而不是升序,则不需要修改整个数组。您可以只查询数据库以按该顺序传递数据,然后像您已经做的那样运行它。

    改变这个:

    $sql = mysqli_query($conn,"SELECT story_id,story_name,story_author,story_cover_link FROM short_story 
     WHERE parent=0");
    

    到这里:

    $sql = mysqli_query($conn,"SELECT story_id,story_name,story_author,story_cover_link FROM short_story 
     WHERE parent=0 ORDER BY story_id DESC");
    

    【讨论】:

      【解决方案3】:

      您可以使用array_reverse 基本功能。这会反转你的数组。

      像这样简单又快速:

      $categories['Categories'] = array_reverse($categories['Categories']);
      echo json_encode($categories);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-12
        • 2012-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-17
        • 2018-10-23
        相关资源
        最近更新 更多