脚本宝典收集整理的这篇文章主要介绍了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']; }
以上是脚本宝典为你收集整理的php – mysql返回多级数组全部内容,希望文章能够帮你解决php – mysql返回多级数组所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。