Добавить массив во вложенный JSON, если значение из базы данных равно строке - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть несколько таблиц в моей базе данных, и я хочу соединить их вместе, чтобы создать вложенный JSON для запроса GET.В какой-то момент я хотел бы добавить массив на основе значения из базы данных, например (type === "fixValue").

 ... $sql = "SELECT name, type
            FROM section INNER JOIN question ON section.section_id = question.section_id
            WHERE  question.section_id = ".$row_section['section_id']."";

            $stmtq = $db->query($sqlq);
            $stmtq -> execute();

            while( $row_question = $stmtq->fetch(PDO::FETCH_ASSOC)){

                $question_array['name'] = $row_question['name'];
                $question_array['type'] =  $row_question['type'];

                if($row_question['type'] == "fixValue"){

                    $question_array['options'] = array();

                }
                array_push($section_array['sectionQuestion'], $question_array);
            } ....

Мой вывод в формате json теперь равен:

{
"name": "Test",
"something": "Test",
"array1": [
    {
        "name": "Section",
        "array2": [
            {
                "name": "Something",
                "type": "fixValue",
                "options": []
            },
            {
                "name": "Sometthing2",
                "type": "notFixValue",
                "options": []
            }
        ]
    }
]}

Мой желаемый результат:

    {
"name": "Test",
"something": "Test",
"array1": [
    {
        "name": "Section",
        "array2": [
            {
                "name": "Something",
                "type": "fixValue",
                "options": []
            },
            {
                "name": "Sometthing2",
                "type": "notFixValue",
            }
        ]
    }
]}

Таким образом, массив опций добавляется не только к элементу со значением "fixValue".Элементы с другим значением типа, как "fixValue", должны быть без массива "options".Есть идеи, как добиться чего-то подобного?

1 Ответ

0 голосов
/ 07 декабря 2018

Попробуйте использовать счетчик вместо array_push:

... $sql = "SELECT name, type
            FROM section INNER JOIN question ON section.section_id = question.section_id
            WHERE  question.section_id = ".$row_section['section_id']."";

            $stmtq = $db->query($sqlq);
            $stmtq -> execute();
            $cnt = 0;
            while( $row_question = $stmtq->fetch(PDO::FETCH_ASSOC)){

                $question_array['name'] = $row_question['name'];
                $question_array['type'] =  $row_question['type'];

                if($row_question['type'] == "fixValue"){

                    $question_array['options'] = array();

                }
                $section_array['sectionQuestion'][$cnt] = $question_array;
                unset($question_array);
                $cnt++;
            } ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...