Я подготовил массив на php в порядке убывания, преобразованный в json_encode. Но на стороне клиента я получаю данные в порядке возрастания.

Может ли кто-нибудь помочь мне, как я могу отправить клиенту в порядке убывания.

Массив похож на

Array('code' => '1', 'data' => Array('10' => "Test1", '3' => 'Test2', '1' => 'Test3'))

И вывод JSON похож на

{'code' : '1', 'data' : {'1' : 'Test3', '3' : 'Test2', '10' : 'Test1'}}
0
Manimekalai Nandhini 27 Окт 2015 в 13:11

2 ответа

Лучший ответ

Насколько я понимаю, вы хотите отсортировать $arr['data'] по ключу?

Это можно сделать с помощью ksort

$arr = Array('code' => '1', 'data' => Array('10' => "Test1", '3' => 'Test2', '1' => 'Test3'));
//ksort will sort the array depending on the key
ksort($arr['data']);
print_r($arr);
echo json_encode($arr);

Результат будет

Array
(
    [code] => 1
    [data] => Array
        (
            [1] => Test3
            [3] => Test2
            [10] => Test1
        )

)
{"code":"1","data":{"1":"Test3","3":"Test2","10":"Test1"}}

Живой пример здесь

1
Tanuel Mategi 27 Окт 2015 в 10:23

Он автоматически сортируется браузером, поэтому для порядка у вас есть 2 решения:

  1. Вы можете сначала кодировать массив data, а затем кодировать массив result
$data = [
    '10' => "Test1",
    '3'  => 'Test2',
    '1'  => 'Test3'
];

$result = [
    'code' => '1',
    'data' => json_encode($data)
];
  1. Вам нужно изменить индекс массива data, вы можете добавить _ перед каждым ключом или что-нибудь еще, чтобы преобразовать его в строку.
$result = [
    'code' => '1',
    'data' => [
        '_10' => "Test1",
        '_3'  => 'Test2',
        '_1'  => 'Test3'
    ]
];

И тогда вы получите

{
    "code": "1",
    "data": 
    {
        "_10": "Test1",
        "_3" : "Test2",
        "_1" : "Test3"
    }
}

Решение 2 я получил от https://stackoverflow.com/a/15806551/5493005

1
Community 23 Май 2017 в 12:34