@kentos

Как преобразовать json в массив?

Здравствуйте, приходят такие данные
{"TourDate": "23.01", "Nights": "7", "City": "\u0428\u0430\u0440\u043c-\u044d\u043b\u044c-\u0428\u0435\u0439\u0445", "Hotel": "ALBATROS AQUA BLU RESORT SHARM EL SHEIKH 4+ *", "Board": "AI", "Accomodation": "1 (18+)", "Price": "836", "Month": "01"}


Как преобразовать их в массив через PHP и сохранить в файл
$postdata = (array) json_decode(file_get_contents('php://input'), true);
file_put_contents('file.txt', (string) file_get_contents('php://input') , FILE_APPEND);
       // если есть нужные нам поля
foreach ($postData as $value){
    file_put_contents('file.txt', $value , FILE_APPEND);
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
я вам тут комменты напишу, а вы уже чуть сами головой подумайте:
<?php
// для начала посмотреть в доках ЧТО возвращает file_put_contents, 
// после этого будет понятно почему в строчке ниже бред
$postdata = (array) file_put_contents('file.txt', file_get_contents('php://input')); , FILE_APPEND);
// если исправить бред сверху, то сначала нужно будет прочитать файл, декодировать в массив из json
// и тогда уже можно будет что-то там проверять
       // если есть нужные нам поля
// здесь уже используется другая переменная, $postData вместо $postdata, в этом коде это вообще 
// не важно, так как в $postdata все равно ничего толкового не попало.
foreach ($postData as $value){
// по вашему комментарию вроде нужно что-то проверять, однако у вас тупо 
// пишется в конец файла значение из массива без каких-либо разделителей
// (теоретически, на самом деле скрипт сейчас сюда не доходит)
  file_put_contents('file.txt', $value , FILE_APPEND);
// тут вообще закрывающая } отсутствует.
?>
Ответ написан
Vlad_IT
@Vlad_IT
Front-end разработчик
Так разве у вас в file_get_contents('php://input') приходит не текст в JSON? Прям так и сохраняйте, без json_decode.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Ticketland.ru Москва
от 120 000 руб.
Интерно Ростов-на-Дону
от 35 000 до 50 000 руб.
СиСорт Барнаул
от 40 000 до 115 000 руб.