Страница 1 из 1
[PHP] Как закодировать в JSON в данном случае?
Добавлено: 02 июн 2013, 16:37
MISTER_GONWIK
Как закодировать в JSON в данном случае?
Код: Выделить всё
...$js .= "array('response'=>array('user'=>array("; for ($i=0; $i<mysql_num_rows($sql);$i++){ $r = mysql_fetch_array($sql); $js .= "array('user_id'=>".$r['uid'].",'score'=>".$r['score']."),"; }$js .= ")));";$js=str_replace("\"",'',$js); echo json_encode($js);
Выводит:
Код: Выделить всё
"array('response'=>array('user'=>array(array('user_id'=>1,'score'=>14525),array('user_id'=>2,'score'=>4161),)));"
Должно:
Код: Выделить всё
{"response":{"user":[{"user_id":1,"score":14525},{"user_id":2,"score":4161}]}}
Подскажите, пожалуйста
Re: [PHP] Как закодировать в JSON в данном случае?
Добавлено: 02 июн 2013, 17:43
sasha^
выше у вас даже не говно-код, а хуже
вот так нужно..
Код: Выделить всё
$res = array("response" => array("user" => array()));while($f = mysql_fetch_array($sql)) array_push($res["response"]["user"], array("user_id" => $f["uid"], "score" => $f["score"]));echo json_encode($res);
Re: [PHP] Как закодировать в JSON в данном случае?
Добавлено: 02 июн 2013, 18:44
IndieGD
Позвольте добавить, лучше там где это возможно вместо array_push() использовать пустые квадратные скобки
Код: Выделить всё
$res["response"]["user"][] = array("user_id" => $f["uid"], "score" => $f["score"]);
Так как это более производительно, об этом упомянуто даже в оф. документации.
Re: [PHP] Как закодировать в JSON в данном случае?
Добавлено: 02 июн 2013, 19:14
sasha^
согласен, но в редакторе намного проще найти добавление в массив таким способом.
а насчет скорости и памяти - речь о сотых секунды в нашем случае и нескольких мегабайтах, т.к. не думаю что речь о массиве более 1к.
Re: [PHP] Как закодировать в JSON в данном случае?
Добавлено: 02 июн 2013, 20:12
IndieGD
sasha^, как можно не считать доли секунды, когда речь идет о серверном скрипте? 5к пользователей и эти доли секунды передадут привет.
В конкретном случае речь идет о снижении производительности в 8-10 раз. Я сам проводил тесты, там где вариант с [] отрабатывает за 0.3, варианту с array_push требуется >2 секунд, как по мне это повод задуматься.
Re: [PHP] Как закодировать в JSON в данном случае?
Добавлено: 02 июн 2013, 20:18
sasha^
какие нафиг 5к юзеров, если человек не может закодировать в JSON?))
а насчет [] согласен...
З.Ы. пожалуй у себя перепишу кое-где))
Re: [PHP] Как закодировать в JSON в данном случае?
Добавлено: 02 июн 2013, 20:19
IndieGD
какие нафиг 5к юзеров, если человек не может закодировать в JSON?))
Ну это да