Сортировка JSON файла по указанному c значению в PHP с последующим сохранением отсортированного JSON файла - PullRequest
0 голосов
/ 05 мая 2020

Я новичок в PHP и JSON. В настоящее время я создаю веб-сайт, на котором есть рейтинг для видеоигр. Я создал файл JSON со всей информацией в нем:

{"id":1,"name":"The Crew","rating":"10","genre":"Racing","release_date":"02.12.2014","developer":"Ivory Tower","publisher":"Ubisoft","platforms":"PS4, Xbox One, PC", "age_restriction":"12"}
{"id":2,"name":"DriveClub","rating":"8","genre":"Racing","release_date":"07.10.2014","developer":"Evolution Studios","publisher":"Sony Interactive Entertainment","platforms":"PS4", "age_restriction":"3"}
{"id":3,"name":"Project CARS","rating":"8","genre":"Racing","release_date":"06.05.2015","developer":"Slightly Mad Studios","publisher":"Slightly Mad Studios","platforms":"PS4, Xbox One, PC", "age_restriction":"3"}
{"id":4,"name":"Project CARS 2","rating":"8","genre":"Racing","release_date":"21.09.2017","developer":"Slightly Mad Studios","publisher":"Slightly Mad Studios","platforms":"PS4, Xbox One, PC", "age_restriction":"3"}
{"id":5,"name":"Dirt Rally","rating":"10","genre":"Racing","release_date":"07.12.2015","developer":"Codemaster","publisher":"Codemaster","platforms":"PS4, Xbox One, PC, MacOs, Linux", "age_restriction":"6"}
{"id":6,"name":"Wreckfest","rating":"8","genre":"Racing","release_date":"15.01.2014","developer":"Bugbear Entertainment","publisher":"THQ Nordic","platforms":"PS4, Xbox One, PC", "age_restriction":"12"}
{"id":7,"name":"Gran Turismo Sport","rating":"8","genre":"Racing","release_date":"17.10.2017","developer":"Polyphony Digitial","publisher":"Polyphony Digital","platforms":"PS4", "age_restriction":"3"}
{"id":8,"name":"F1 2019","rating":"8","genre":"Racing","release_date":"25.06.2019","developer":"Codemaster","publisher":"Codemaster","platforms":"PS4, Xbox One, PC", "age_restriction":"3"}
{"id":9,"name":"Need For Speed Pay Back","rating":"6","genre":"Racing","release_date":"10.11.2017","developer":"Ghost Games","publisher":"EA","platforms":"PS4, Xbox One, PC", "age_restriction":"12"}
{"id":10,"name":"The Crew 2","rating":"7","genre":"Racing","release_date":"31.05.2018","developer":"Ivory Tower","publisher":"Ubisoft","platforms":"PS4, Xbox One, PC", "age_restriction":"12"}

Мне удалось отсортировать игры по рейтингу, используя этот код

$data = jsonLoadAllGames("data/json/games.json");
usort($data, function($a, $b) { //Sort the array using a user defined function
    return $a->rating > $b->rating ? -1 : 1; //Compare the scores
});   

Однако я не могу понять, как сохранить отсортированный список в файл JSON, связанный с моей таблицей ранжирования. В настоящий момент они отображаются в том порядке, в котором они перечислены. Идентификатор необходим для отображения игры на другой странице. (Мне не разрешено SQL кстати)

Надеюсь, это имеет смысл, если есть какие-либо вопросы, не стесняйтесь их задавать. Заранее благодарим за любую помощь!

1 Ответ

0 голосов
/ 06 мая 2020
$data = jsonLoadAllGames("data/json/games.json");
usort($data, function($a, $b) { //Sort the array using a user defined function
    return $a->rating > $b->rating ? -1 : 1; //Compare the scores
});

file_put_contents("data/json/mynewfile.json", json_encode($data));

Кроме того, вы должны проверить возвращаемое значение file_put_contents на наличие ошибок.

Если вам нужен выходной файл с красивым отступом, укажите JSON_PRETTY_PRINT в качестве второго параметра для json_encode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...