【问题标题】:Json sort by id which will be obtained from databaseJson按id排序,将从数据库中获取
【发布时间】:2026-01-20 14:05:01
【问题描述】:

我在 JSON 中遇到问题。我想按变量 id 的升序对 JSON 进行排序。

这是目前的 JSON 数据

{"server_response":[{"id":"9","email":"test@gmail.com=","password":"test"},{"id":"5","email":"json@gmail.com","password":"json"},{"id":"14","email":"wrong@gmail.com","password":"test"},{"id":"13","email":"mail@gmail.com=","password":"mail"}]}

我现在使用的php文件是

<?php

require_once('dbConnect.php');

$sql = "select * from users;";

$result = mysqli_query($con,$sql);

$response = array();

while($row = mysqli_fetch_array($result))
{
 array_push($response,array("id"=>$row[0],"email"=>$row[1],"password"=>$row[2]));
}

echo json_encode(array("server_response"=>$response));

mysqli_close($con);

?>

但我希望我的输出如下所示。php 文件的任何更改???

{"server_response":[{"id":"5","email":"json@gmail.com","password":"json"},{"id":"9","email":"test@gmail.com=","password":"test"},{"id":"13","email":"mail@gmail.com=","password":"mail"},{"id":"14","email":"wrong@gmail.com","password":"test"}]}

【问题讨论】:

  • 在查询中使用 DESC 或在客户端排序

标签: php android html json


【解决方案1】:

您可以在客户端进行排序,但最好仅从服务器端进行排序。你需要做的是:

$sql = "select * from users order by id;";

这应该可行。如果您希望它按降序排列,请在 id 之后添加关键字:'desc'(不带单引号)。

【讨论】:

    【解决方案2】:

    试试下面的代码...

    <?php
    
    $json = '{"server_response":[{"id":"9","email":"test@gmail.com=","password":"test"},{"id":"5","email":"json@gmail.com","password":"json"},{"id":"14","email":"wrong@gmail.com","password":"test"},{"id":"13","email":"mail@gmail.com=","password":"mail"}]}
    ';
    $arr = json_decode($json,true); //Converts your json into array
    
    $main = $arr['server_response']; // your array for sorting
    
    $list = array_sort($main, 'id', SORT_ASC); //makes function call
    print_r($list);  //desired result
    
    function array_sort($array, $on, $order=SORT_ASC){
    
        $new_array = array();
        $sortable_array = array();
    
        if (count($array) > 0) {
            foreach ($array as $k => $v) {
                if (is_array($v)) {
                    foreach ($v as $k2 => $v2) {
                        if ($k2 == $on) {
                            $sortable_array[$k] = $v2;
                        }
                    }
                } else {
                    $sortable_array[$k] = $v;
                }
            }
    
            switch ($order) {
                case SORT_ASC:
                    asort($sortable_array);
                    break;
                case SORT_DESC:
                    arsort($sortable_array);
                    break;
            }
    
            foreach ($sortable_array as $k => $v) {
                $new_array[$k] = $array[$k];
            }
        }
    
        return $new_array;
    }
    ?>
    

    【讨论】: