Приветствую, форумчане! Передаю json в php, в php файле хочу разобрать строку, объединить с существующей из куки и собрать заново. Код (Text): [{"id":"195"},{"count":"1"},{"summa":"300"},{"size":"10x10"},{"color":"red"},{"comment":"коммент"}] А нужно чтобы было так: Код (Text): [{"id":"195","count":"1","summa":"300","size":"10x10","color":"red","comment":"коммент"}] Можете подсказать какая ошибка в foreach или json_decode? Код (Javascript): function card(id,count,summa,size,color,comment,del){ booktemp = { "id" : id, "count" : count, "summa" : summa, "size" : size, "color" : color, "comment" : comment }; $.post("/submit/basket.php", { json: JSON.stringify(booktemp) }, function( data ) { alert(data); }); } PHP: $cookie = $_COOKIE['item']; $json = $_POST['json']; if(isset($cookie)){ $json = array_merge(json_decode($json, TRUE), json_decode($cookie, TRUE)); }else{ $json = json_decode($json, TRUE); } foreach ($json as $key => $value) { $result[] = array($key => $value); } $json = json_encode($result,JSON_UNESCAPED_UNICODE); setcookie("item", $json, time()+259200, '/');
1. что значит в вашем понимании объединить? Каков смысл объединения? 2. какая информация у вас в куки записана? Почему там не хотите использовать тот формат что у вас уже есть? 3. почему не хотите в куки сериализованный массив. что есть, записать?
функция isset проверяет существование переменной. переменная в твоём случае существует в любом случае т к ты её инициализируешь, и не важно что в неё попадет. это раз. два - нужно посмотреть что лежит в куке, чтобы понять, что ты там мёржишь. и три - если есть ошибка, то нужен её текст, а если ошибка логическая, то нужно описывать, что ты получаешь и что хочешь получить (что тебя не устраивает в результате).
Разобрался сам, выкладываю результат: PHP: $text = '[{"id":"1","name":"John","size":"big"}]'; $cook = '[{"id":"44","name":"Max","size":"small"},{"val":"100"}]'; $json = array_merge(json_decode($text, true),json_decode($cook, true)); $json = json_encode($json,JSON_UNESCAPED_UNICODE); echo $json; //Получим: [{"id":"1","name":"John","size":"big"},{"id":"44","name":"Max","size":"small"},{"val":"100"}] Теперь остался не решенным вопрос, как удалить из полученного результата {"val":"100"} ? через foreach unset ?
Код (Text): $json = array_merge(json_decode($text, true),json_decode(preg_replace('|,{"val":"\d+"}|','',$cook), true));