首页 > 解决方案 > 如何在 PHP 中配对 2 个相关 MySQL 表中的值?

问题描述

我正在尝试使用多项选择选项输出问题(使用自定义 wordpress 表)。我为问题 ( q_question) 和答案 ( q_answer) 设置了单独的表格。

我之前的方法是(获取所有相关问题,然后查询每个问题的选项)-

foreach ($all_questions as $question) {
// Running SQL to get options specific for this specific question id
}

但我认为,它会用多个查询淹没服务器(因为我试图在一轮中输出 300 个问题)。

所以(为了节省来自多个 SQL 查询的服务器负载)现在我试图在单个查询中获取所有相关选项。为此,首先我$qid_list从我的问题表中选择并存储了所需的问题 ID。然后在单个查询中获取所有相关选项/答案 -

$ans_list = $wpdb->get_results("SELECT ID,question_id,answer,correct FROM {$wpdb->prefix}q_answer WHERE question_id IN ($qid_list)");

问题是我无法理解如何使用这种方法将问题与其相关选项配对。 300个问题意味着大约1200个选项,那么有没有办法将它们排列在一些数组/子数组中,以便进一步使用它们?

ps - 我不知道这个问题的正确标题应该是什么。

标签: php

解决方案


使用映射即关联数组:

$ans_map = array();
foreach($ans_list as $ans) {
    $question_id = $ans->question_id;
    if(!isset($ans_map[$question_id])) $ans_map[$question_id] = array();
    $ans_map[$question_id][] = $ans;
}

echo "<pre>";
print_r($ans_map);
echo "</pre>";

推荐阅读