Поэтому я пытаюсь кодировать JSON из MySQL, и мне это нужно в формате [pagenumber] [id, type, description] [answerid, answerdescription]. Целью этого является чтение данных в файле javascript, который будет генерировать для меня многоступенчатый опрос.
Я попытаюсь нарисовать псевдокод о том, как я хочу, чтобы он выглядел прямо здесь:
{"pages": [{1: [{"id":1,"text":"U mad?","options": [{"opt_id":1,"option":"yes","answer:''"}, {"opt_id":2,"option":"no","answer:''"}, {"opt_id":3,"option":"perhaps","answer:''"}]}, {"id":2,"text":"Got it?","options": [{"opt_id":1,"option":"yes","answer:''"}, {"opt_id":2,"option":"no","answer:''"}] }] }, {2: [{"id":3,"text":"Help me?","options": [{"opt_id":1,"option":"yes","answer:''"}, {"opt_id":2,"option":"no","answer:''"}, {"opt_id":3,"option":"perhaps","answer:''"}]}, {"id":4,"text":"Please?","options": [{"opt_id":1,"option":"yes","answer:''"}, {"opt_id":2,"option":"no","answer:''"}] }] }] }
Это то, что я получил до сих пор, но я не могу представить себе способ добавить к нему 3-е «измерение», мне нужен массив из [id => (int), description => (string)] на каждый вопрос. И каждый вопрос требует места для нескольких ответов, связанных с ними. Последний столбец в массиве ответов / вариантов предназначен для текстовых строк (на большинство ответов отвечают идентификационные номера, но некоторые из них представляют собой текстовые области, которым нужны целые строки). это может не понадобиться, поскольку я могу, вероятно, отправить результаты формы путем сериализации.
$rows = array(); while($r = mysql_fetch_assoc($sth)) { $Qid = $r['id']; $page=$r['page']; $type=$r['type']; $Qdesc=$r['description']; $rows[$page][] = array( 'id' => $Qid, 'type' => $type, 'description' => $Qdesc); }
Результатом этого является следующее (первые 3 страницы).
{ "1":[ {"id":"2","type":"1","description":"U mad?"}, {"id":"3","type":"1","description":"Got it?"}, {"id":"4","type":"1","description":"Help me?"}], "2":[ {"id":"5","type":"1","description":"Please?"}, {"id":"6","type":"1","description":"Any clues?"}], "3":[ {"id":"7","type":"2","description":"Foobar?"}]}