За последние 24 часа нас посетили 22648 программистов и 1016 роботов. Сейчас ищут 657 программистов ...

JSON в PHP

Тема в разделе "Прочие вопросы по PHP", создана пользователем zhenia3003, 1 фев 2018.

  1. zhenia3003

    zhenia3003 Активный пользователь

    С нами с:
    20 авг 2012
    Сообщения:
    179
    Симпатии:
    3
    Приветствую, форумчане! Передаю json в php, в php файле хочу разобрать строку, объединить с существующей из куки и собрать заново.
    Код (Text):
    1. [{"id":"195"},{"count":"1"},{"summa":"300"},{"size":"10x10"},{"color":"red"},{"comment":"коммент"}]
    А нужно чтобы было так:
    Код (Text):
    1. [{"id":"195","count":"1","summa":"300","size":"10x10","color":"red","comment":"коммент"}]
    Можете подсказать какая ошибка в foreach или json_decode?
    Код (Javascript):
    1. function card(id,count,summa,size,color,comment,del){
    2.     booktemp = {
    3.         "id" : id,
    4.         "count" : count,
    5.         "summa" : summa,
    6.         "size" : size,
    7.         "color" : color,
    8.         "comment" : comment
    9.     };
    10.     $.post("/submit/basket.php", {
    11.         json: JSON.stringify(booktemp)
    12.     }, function( data ) {
    13.           alert(data);
    14.     });
    15. }
    PHP:
    1.     $cookie = $_COOKIE['item'];
    2.     $json = $_POST['json'];
    3.     if(isset($cookie)){
    4.         $json = array_merge(json_decode($json, TRUE), json_decode($cookie, TRUE));      
    5.     }else{
    6.         $json = json_decode($json, TRUE);
    7.     }
    8.     foreach ($json as $key => $value) {
    9.         $result[] = array($key => $value);
    10.     }
    11.     $json = json_encode($result,JSON_UNESCAPED_UNICODE);
    12.     setcookie("item", $json, time()+259200, '/');
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    1. что значит в вашем понимании объединить? Каков смысл объединения?
    2. какая информация у вас в куки записана? Почему там не хотите использовать тот формат что у вас уже есть?
    3. почему не хотите в куки сериализованный массив. что есть, записать?
     
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    функция isset проверяет существование переменной.
    переменная в твоём случае существует в любом случае т к ты её инициализируешь, и не важно что в неё попадет. это раз.

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

    и три - если есть ошибка, то нужен её текст, а если ошибка логическая, то нужно описывать, что ты получаешь и что хочешь получить (что тебя не устраивает в результате).
     
  4. zhenia3003

    zhenia3003 Активный пользователь

    С нами с:
    20 авг 2012
    Сообщения:
    179
    Симпатии:
    3
    Разобрался сам, выкладываю результат:
    PHP:
    1. $text = '[{"id":"1","name":"John","size":"big"}]';
    2. $cook = '[{"id":"44","name":"Max","size":"small"},{"val":"100"}]';
    3. $json = array_merge(json_decode($text, true),json_decode($cook, true));
    4. $json = json_encode($json,JSON_UNESCAPED_UNICODE);
    5. echo $json;
    6. //Получим: [{"id":"1","name":"John","size":"big"},{"id":"44","name":"Max","size":"small"},{"val":"100"}]
    Теперь остался не решенным вопрос, как удалить из полученного результата {"val":"100"} ? через foreach unset ?
     
    denis01 нравится это.
  5. alba2001

    alba2001 Активный пользователь

    С нами с:
    7 фев 2012
    Сообщения:
    56
    Симпатии:
    0
    Код (Text):
    1. $json = array_merge(json_decode($text, true),json_decode(preg_replace('|,{"val":"\d+"}|','',$cook), true));