为了账号安全,请及时绑定邮箱和手机立即绑定

将调查问卷转换为对象

将调查问卷转换为对象

PHP
森栏 2023-08-19 16:43:06
希望你能帮助我,我之前确实弄清楚了一些递归,但这不是其中之一。我通过问卷调查得到了这样的数组:Array(    [Q1] => Array        (            [A3] => Array                (                    [Q11] => Array                        (                            [A11] => Array                                (                                    [Q111] => A112                                )                        )                    [Q12] => Array                        (                            [A23] => Stackoverflow                        )                )        )    [Q2] => A5)这些是问题和答案(我不能依赖它们的索引或前缀,但它们总是成对出现),如果答案是数组,则它有子问题。Q1 有 A3 作为答案,A11 作为 Q11 的嵌套答案,最后 A112 作为该分支中 Q111 的最终答案。但 Q1 还有一个并行子问题,选择了 A23,因为它是“其他:”选项,所以用户输入了文本。最后第二题选择了A5答案。为了更快地输入,这是 JSON 格式的数组:    {"Q1":{"A3":{"Q11":{"A11":{"Q111":"A112"}},"Q12":{"A23":"Stackoverflow"}}},"Q2":"A5"}所以现在,我需要在这样的对象中获取结果:{    "questions": [{            "questionId": "Q1",            "answers": [{                "answerId": "A3",                "questions": [{                        "questionId": "Q11",                        "answers": [{                            "answerId": "A11",                            "questions": [{                                "questionId": "Q111",                                "answers": [{                                    "answerId": "A112"                                }]                            }]                        }]                    },                    {                        "questionId": "Q12",                        "answers": [{                            "answerId": "A23",                            "answerPhrase": "Stackoverflow"                        }]                    }                ]            }]        },        {            "questionId": "Q2",            "answers": [{                "answerId": "A5"            }]        }    ]}我确信递归相对简单,但在尝试并迷失之后,我尝试了 JSON,结果更糟。我提醒您,问题和解答是成对出现的,所以我相信递归应该有两个嵌套循环,但您可能更清楚 - 我只是不能依赖索引值。预先感谢 PHP 向导!
查看完整描述

1 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

希望你能帮助我,我之前确实弄清楚了一些递归,但这不是其中之一。我通过问卷调查得到了这样的数组:


Array

(

    [Q1] => Array

        (

            [A3] => Array

                (

                    [Q11] => Array

                        (

                            [A11] => Array

                                (

                                    [Q111] => A112

                                )

                        )

                    [Q12] => Array

                        (

                            [A23] => Stackoverflow

                        )

                )

        )

    [Q2] => A5

)

这些是问题和答案(我不能依赖它们的索引或前缀,但它们总是成对出现),如果答案是数组,则它有子问题。Q1 有 A3 作为答案,A11 作为 Q11 的嵌套答案,最后 A112 作为该分支中 Q111 的最终答案。但 Q1 还有一个并行子问题,选择了 A23,因为它是“其他:”选项,所以用户输入了文本。最后第二题选择了A5答案。


为了更快地输入,这是 JSON 格式的数组:


    {"Q1":{"A3":{"Q11":{"A11":{"Q111":"A112"}},"Q12":{"A23":"Stackoverflow"}}},"Q2":"A5"}

所以现在,我需要在这样的对象中获取结果:


{

    "questions": [{

            "questionId": "Q1",

            "answers": [{

                "answerId": "A3",

                "questions": [{

                        "questionId": "Q11",

                        "answers": [{

                            "answerId": "A11",

                            "questions": [{

                                "questionId": "Q111",

                                "answers": [{

                                    "answerId": "A112"

                                }]

                            }]

                        }]

                    },

                    {

                        "questionId": "Q12",

                        "answers": [{

                            "answerId": "A23",

                            "answerPhrase": "Stackoverflow"

                        }]

                    }

                ]

            }]

        },

        {

            "questionId": "Q2",

            "answers": [{

                "answerId": "A5"

            }]

        }

    ]

}

我确信递归相对简单,但在尝试并迷失之后,我尝试了 JSON,结果更糟。我提醒您,问题和解答是成对出现的,所以我相信递归应该有两个嵌套循环,但您可能更清楚 - 我只是不能依赖索引值。预先感谢 PHP 向导!


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信