猿问

如何反转这个json

我有一个关于数组反转的问题。我试过 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。我想要的是,我想扭转这个。回归后


ITMISS
浏览 160回答 3
3回答

开心每一天1111

是有一个替代解决方案可以消除更改查询的需要并略微提高性能。如果您尝试以Categories相反的顺序添加,只需使用array_unshift()而不是 array_push():// pushing sinlge category into parentarray_unshift($categories["Categories"], $category);如果您想对以下内容执行相同操作chapters:// pushing sub category into subcategories nodearray_unshift($category["chapters"], $subcat);

精慕HU

如果您正在寻找的只是让 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");

回首忆惘然

您可以使用array_reverse基本功能。这反转了你的数组。像这样简单快速:$categories['Categories'] = array_reverse($categories['Categories']);echo json_encode($categories);
随时随地看视频慕课网APP
我要回答