php – mysql返回多级数组
发布时间:2020-12-13 17:20:49 所属栏目:PHP教程 来源:网络整理
导读:我正在使用三个与 PHP应用程序相关的MySQL表.有些测试有很多问题,问题有很多答案.我想做的是循环数据如下: foreach($tests as $test){ echo $test-testName; foreach($test-questions as $question) { echo $question-questionText; foreach($question-answ
我正在使用三个与
PHP应用程序相关的MySQL表.有些测试有很多问题,问题有很多答案.我想做的是循环数据如下:
foreach($tests as $test) { echo $test->testName; foreach($test->questions as $question) { echo $question->questionText; foreach($question->answers as $answer) { echo $answer->answerText; } } } 我想知道的是MySQL查询和PHP代码将以这种方式循环遍历它? 编辑MySQL无法返回这样的数组,我应该说的是MySQL PHP代码的样子. 为清楚起见,表格是测试,问题和答案.问题表包含test_id列,答案包含question_id 谢谢! 我想要回来的结构将是: array( 'testName' = 'Test name string','questions' = array( array( 'questionId' = 1,'questionText' = 'Question string','answers' = array( array( 'answerId' = 1,'answerText' = 'Answer string' ),array( 'answerId' = 2,'answerText' = 'Answer string' ) ) ) ) ); 编辑 我目前的实现如下,我想要做的是急切加载数据而不是执行如此多的查询 $tests = getTests(); foreach($tests as $test){ $questions = getQuestions($test->id); foreach($questions as $question){ $answers = getAnswers($question->id); foreach($answers as $answer){ // do answer things } } } 解决方法$mysqli = new mysqli("localhost","my_user","my_password","world"); $query = "SELECT testname,question,answer FROM tests JOIN questions ON (tests.id = question.test_id) JOIN answers ON (questions.id = answers.id) WHERE 'your condition' ORDER BY tests.id,question.id" $result = $mysqli->query($query); 您可以使用in_array函数来获得所需的结果(您可以生成数组或打印结果).以下是打印值的示例. (你可以使用id代替名称来改善) $tests_arr = array(); $questions_arr = array(); while( $row = $result->fetch_array(MYSQLI_ASSOC) ) { if(!in_array($row['testname'],$test_arr) { $test_arr[] = $row['testname']; echo $row['testname']; } if(!in_array($result['question'],$question_arr)) { $questions_arr[] = $row['question']; echo $row['question']; } echo $row['answer']; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |