Программирование, которое не связано с API.
MISTER_GONWIK
Сообщения: 1 Зарегистрирован: 02 июн 2013, 16:27
Сообщение
MISTER_GONWIK » 02 июн 2013, 16:37
Как закодировать в 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}]}}
Подскажите, пожалуйста
sasha^
Сообщения: 711 Зарегистрирован: 10 сен 2012, 16:52
Сообщение
sasha^ » 02 июн 2013, 17:43
выше у вас даже не говно-код, а хуже
вот так нужно..
Код: Выделить всё
$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);
IndieGD
Сообщения: 124 Зарегистрирован: 28 май 2013, 19:20
Сообщение
IndieGD » 02 июн 2013, 18:44
Позвольте добавить, лучше там где это возможно вместо array_push() использовать пустые квадратные скобки
Код: Выделить всё
$res["response"]["user"][] = array("user_id" => $f["uid"], "score" => $f["score"]);
Так как это более производительно, об этом упомянуто даже в оф. документации.
sasha^
Сообщения: 711 Зарегистрирован: 10 сен 2012, 16:52
Сообщение
sasha^ » 02 июн 2013, 19:14
согласен, но в редакторе намного проще найти добавление в массив таким способом.
а насчет скорости и памяти - речь о сотых секунды в нашем случае и нескольких мегабайтах, т.к. не думаю что речь о массиве более 1к.
IndieGD
Сообщения: 124 Зарегистрирован: 28 май 2013, 19:20
Сообщение
IndieGD » 02 июн 2013, 20:12
sasha^ , как можно не считать доли секунды, когда речь идет о серверном скрипте? 5к пользователей и эти доли секунды передадут привет.
В конкретном случае речь идет о снижении производительности в 8-10 раз. Я сам проводил тесты, там где вариант с [] отрабатывает за 0.3, варианту с array_push требуется >2 секунд, как по мне это повод задуматься.
sasha^
Сообщения: 711 Зарегистрирован: 10 сен 2012, 16:52
Сообщение
sasha^ » 02 июн 2013, 20:18
какие нафиг 5к юзеров, если человек не может закодировать в JSON?))
а насчет [] согласен...
З.Ы. пожалуй у себя перепишу кое-где))
IndieGD
Сообщения: 124 Зарегистрирован: 28 май 2013, 19:20
Сообщение
IndieGD » 02 июн 2013, 20:19
какие нафиг 5к юзеров, если человек не может закодировать в JSON?))
Ну это да