从两个表中获取数据

时间:2018-11-22 10:10:52

标签: database codeigniter mysqli

第一个表: question 第二张表: answer 我用它们进行考试。 对于每个问题,我有3个答案。我的问题是要一起获取它们,获取后我想要这样的数组:

[0]=>array(8) 
{
    ["question"]=>  string(13) "question test"
    ["name_id"]=>   string(1) "1"
    ["answer"]=>    string(1) "1"
    ["points"]=>    string(1) "1"
    ["answer"]=>    string(1) "2"
    ["points"]=>    string(1) "2"
    ["answer"]=>    string(1) "3"
    ["points"]=>    string(1) "3"
}

但是因为关键答案和要点相同,所以在获取后我得到了:

[0]=>array(4) 
{
    ["question"]=>  string(13) "question test"
    ["name_id"]=>   string(1) "1"
    ["answer"]=>    string(1) "1"
    ["points"]=>    string(1) "1"
}   
[1]=>array(4) 
{
    ["question"]=>  string(13) "question test"
    ["name_id"]=>   string(1) "1"
    ["answer"]=>    string(1) "2"
    ["points"]=>    string(1) "2"
}   
[2]=>array(4) 
{
    ["question"]=>  string(13) "question test"
    ["name_id"]=>   string(1) "1"
    ["answer"]=>    string(1) "3"
    ["points"]=>    string(1) "3"
}

我写的查询是:

select question , name_id , answer, points from question , answer where question.id_question = answer.id_aquestion

有什么解决方案可以在一个数组而不是3个数组中提取它们吗? (我使用codeigniter的框架)

1 个答案:

答案 0 :(得分:0)

首先不能将相同的键名具有不同的值。 它只会覆盖值... 这是您可以做的:

foreach ($results as $rowKey => $rowVal) {
    $processedResults[0] = [
        "question" => $rowVal["question"],
        "name_id" => $rowVal["name_id"],
        "answer" . $rowKey => $rowVal["answer"],
        "points" . $rowKey => $rowVal["points"]
    ];
}

这样您将获得

[0]=>array(x) 
{
    ["question"] => string(13) "question test"
    ["name_id"] => string(1) "1"
    ["answer0"] => string(1) "1"
    ["points0"] => string(1) "1"
    ["answer1"] => string(1) "2"
    ["points1"] => string(1) "2"
    ["answer2"] => string(1) "3"
    ["points2"] => string(1) "3"
    ....
    ["answerx"] => string(1) "x"
    ["pointsx"] => string(1) "x"
}

希望它会有所帮助:)