php - 如何在 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 - 我不知道这个问题的正确标题应该是什么。
解决方案
使用映射即关联数组:
$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>";
推荐阅读
- php - 从不同价格循环选择匹配值价格
- javascript - 是否可以在 AJAX 成功中包含 php 函数:val()
- entity-framework-core - 将私有字段映射到在 EF Core 3.1 中不起作用的列
- java - 有没有办法在 android 中打开 Wifi 活动并在 android 中获得成功连接的结果
- azure - 是否可以在 Azure 应用服务中更改 IIS 的连接超时设置
- mysql - 错误代码:1005。无法创建表`v2_financieel`。`facturen_azie`(错误代码:150“外键约束格式不正确”)
- spartacus-storefront - 向 Spartacus 添加自定义页面
- sql - 聚合不同长度的数组时,array_agg 方法出现问题
- reactjs - 反应导航 v5 中的 tabBarIcon 问题
- python - 在 Python 中从 XLRD 中获取值