[PHP] Как закодировать в JSON в данном случае?

Программирование, которое не связано с API.
Ответить
MISTER_GONWIK
Сообщения: 1
Зарегистрирован: 02 июн 2013, 16:27

[PHP] Как закодировать в JSON в данном случае?

Сообщение 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}]}}
Подскажите, пожалуйста
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: [PHP] Как закодировать в JSON в данном случае?

Сообщение 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);
IndieGD
Сообщения: 124
Зарегистрирован: 28 май 2013, 19:20

Re: [PHP] Как закодировать в JSON в данном случае?

Сообщение IndieGD »

Позвольте добавить, лучше там где это возможно вместо array_push() использовать пустые квадратные скобки

Код: Выделить всё

$res["response"]["user"][] = array("user_id" => $f["uid"], "score" => $f["score"]);
Так как это более производительно, об этом упомянуто даже в оф. документации.
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: [PHP] Как закодировать в JSON в данном случае?

Сообщение sasha^ »

согласен, но в редакторе намного проще найти добавление в массив таким способом.
а насчет скорости и памяти - речь о сотых секунды в нашем случае и нескольких мегабайтах, т.к. не думаю что речь о массиве более 1к.
IndieGD
Сообщения: 124
Зарегистрирован: 28 май 2013, 19:20

Re: [PHP] Как закодировать в JSON в данном случае?

Сообщение IndieGD »

sasha^, как можно не считать доли секунды, когда речь идет о серверном скрипте? 5к пользователей и эти доли секунды передадут привет.
В конкретном случае речь идет о снижении производительности в 8-10 раз. Я сам проводил тесты, там где вариант с [] отрабатывает за 0.3, варианту с array_push требуется >2 секунд, как по мне это повод задуматься. :)
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: [PHP] Как закодировать в JSON в данном случае?

Сообщение sasha^ »

какие нафиг 5к юзеров, если человек не может закодировать в JSON?))
а насчет [] согласен...
З.Ы. пожалуй у себя перепишу кое-где))
IndieGD
Сообщения: 124
Зарегистрирован: 28 май 2013, 19:20

Re: [PHP] Как закодировать в JSON в данном случае?

Сообщение IndieGD »

какие нафиг 5к юзеров, если человек не может закодировать в JSON?))
Ну это да :)
Ответить